Mockito PowerMock 静态 方法 @Spy 对象方法 mock
2018-01-30 15:01
701 查看
import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; /* * 注意,我用junit,没有用testng */ @RunWith(PowerMockRunner.class) @PrepareForTest({FileUtils.class, RestHttpClient.class, StudentHonorUtil.class}) @PowerMockIgnore({"javax.management.*"}) public class XxxServiceImplTest { @Mock MessageService messageService; @InjectMocks @Spy //@Spy修饰的对象必须要手动new出来 X1ServiceImpl x1Service = new X1ServiceImpl(); @InjectMocks //非@Spy修饰的对象,可以不手动new,由mockito框架维护 X2ServiceImpl x2Service; @BeforeClass //类初始化时,只调用一次 public static void beforeClass(){ } @Before //每运行一个testMethod,就运行一次 public void before(){ //对static方法的mock,必须放这里 //如果放到beforeClass,单元测试不能通过,虽然看上去,此类所有单元测试前,只运行一次就行,但实际不行 PowerMockito.mockStatic(FileUtils.class); PowerMockito.mockStatic(RestHttpClient.class); PowerMockito.mockStatic(StudentHonorUtil.class); MockitoAnnotations.initMocks(this);//此行根据实际情况自己安排放吧 } @Test public void method1Test() throws Exception { Mockito.doReturn(new Xxx()).when(x1Service).someMethod();//注意,对@Spy对象,必须这样mock Mockito.when(x2Service.someMethod(Matchers.anyString(), Matchers.anyInt())).thenReturn(new LinkedList<XObject>()); Mockito.verify(x2Service, Mockito.times(0)).someMethod(Matchers.anyString(), Matchers.anyString()); } }
相关文章推荐
- 如何用PowerMockito 测试静态方法
- 用PowerMock mock 由工厂方法产生的对象
- powermockito “mock public 方法内部 Private方法的问题”
- Mockito 中捕获 mock 对象方法的调用参数
- Mockito为什么不能mock静态方法
- 静态工厂方法创建对象
- 动态的内部类不能在静态方法中直接声明对象
- PowerMockito.doReturn().when()与Mockito.when().thenReturn()的区别
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- autofac如何注册静态方法里的接口对象
- Java网络编程从入门到精通(2):创建InetAddress对象的四个静态方法
- 错误“非静态的字段、方法或属性“System.Web.UI.Page.Server.get”要求对象引用”
- python--类方法、对象方法、静态方法
- 为JS脚本中String对象扩展一个静态Format()方法
- Mockito和PowerMockito的使用
- Mockito 如何 mock 返回值为 void 的方法
- javascript封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承
- 静态main方法内创建本身类对象不会重复初始化的问题
- 这个问题不简单:非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用