powermockito verify静态方法

想要验证某静态方法是否被调用,或者被调用了几次,我们可以用如下方式验证:

PowerMockito.verifyStatic(Mockito.times(1));
MyUtils.mytest(Mockito.anyString());

  先使用verifyStatic方法表明要验证静态方法,可以带参数,也可以不带参数,其参数可以使用Mockito的times方法或never方法来表示其调用次数。下面紧跟着的一行则表示要验证的是哪个已经mock的静态方法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PowerMockito可以用来mock私有静态方法,具体步骤如下: 1. 使用PowerMockito.mockStatic(Class)方法来mock静态类 2. 使用PowerMockito.when()方法来mock静态方法 3. 使用PowerMockito.verify()方法来验证mock的方法是否被调用 示例代码如下: ``` @RunWith(PowerMockRunner.class) @PrepareForTest({MyClass.class}) public class MyClassTest { @Test public void testPrivateStaticMethod() throws Exception { PowerMockito.mockStatic(MyClass.class); PowerMockito.when(MyClass.class, "privateStaticMethod").thenReturn("mockedValue"); String result = MyClass.callPrivateStaticMethod(); assertEquals("mockedValue", result); PowerMockito.verifyStatic(MyClass.class); MyClass.privateStaticMethod(); } } class MyClass { private static String privateStaticMethod() { return "originalValue"; } public static String callPrivateStaticMethod() { return privateStaticMethod(); } } ``` ### 回答2: PowerMockito是一个Mockito和JUnit的扩展库,可以用于模拟各种对象和方法。它可以mock私有、静态、final类和方法等。 在使用PowerMockito模拟私有静态方法时,你需要注意以下几点: 第一步:导入PowerMockito库 要使用PowerMockito,首先需要在项目中添加以下两个依赖: ``` <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.2</version> <scope>test</scope> </dependency> ``` 第二步:使用@RunWith注解和@PrepareForTest注解 @RunWith注解是JUnit提供的一个运行器,用于指定测试运行器,例如@Runwith(MockitoJUnitRunner.class)。而@PrepareForTest注解是PowerMockito提供的一个注解,用于准备需要被mock的类和方法。因此,在使用PowerMockito时,@RunWith注解需要指定为PowerMockRunner.class,@PrepareForTest注解则需要指定需要被mock的类。 例如,以下代码: ``` @RunWith(PowerMockRunner.class) @PrepareForTest({MyClass.class}) public class MyClassTest { //测试私有静态方法 @Test public void testPrivateStaticMethod() throws Exception { //调用私有静态方法 PowerMockito.spy(MyClass.class); PowerMockito.doReturn("HELLO").when(MyClass.class, "privateStaticMethod"); //断言 assertEquals("HELLO", PowerMockito.method(MyClass.class, "privateStaticMethod").invoke()); } } ``` 在这个例子中,我们使用@RunWith(PowerMockRunner.class)注解指定了测试运行器为PowerMockRunner,使用@PrepareForTest({MyClass.class})注解准备了需要被mock的类MyClass。 第三步:使用PowerMockito.spy()方法和PowerMockito.doReturn()方法 PowerMockito.spy()方法用于让PowerMockito监听MyClass这个类,并将其返回一个代理类,以便后续操作。PowerMockito.doReturn()方法用于指定私有静态方法的返回值。 例如: ``` PowerMockito.spy(MyClass.class); PowerMockito.doReturn("HELLO").when(MyClass.class, "privateStaticMethod"); ``` 在上面的代码中,我们使用PowerMockito.spy()方法让PowerMockito监听MyClass这个类,使用PowerMockito.doReturn()方法指定私有静态方法的返回值为"HELLO"。 第四步:使用PowerMockito.method()方法调用私有静态方法 最后,我们使用PowerMockito.method()方法调用私有静态方法,并使用断言方法验证返回结果是否正确。 例如: ``` assertEquals("HELLO", PowerMockito.method(MyClass.class, "privateStaticMethod").invoke()); ``` 在上面的代码中,我们使用PowerMockito.method()方法调用了MyClass类的私有静态方法privateStaticMethod,并使用断言方法验证返回结果是否为"HELLO"。 总之,使用PowerMockito模拟私有静态方法需要准备测试所需的依赖和注解,使用PowerMockito.spy()方法监听类并使用PowerMockito.doReturn()方法指定私有静态方法的返回值,最后使用PowerMockito.method()方法调用私有静态方法并验证结果。 ### 回答3: PowerMockito是一个强大的Java测试框架,它能够模拟各种Java代码中的静态方法、私有方法和构造函数等。PowerMockito的私有静态方法功能是其中一个比较常用的功能,以下是对其的详细说明。 PowerMockito通过使用@RunWith注解,对被测试类进行包装和模拟,从而可以调用和测试私有静态方法。具体实现方法如下: 第一步:引入 PowerMockito 和 JUnit 的 jar 包和要测试的类的 jar 包。 第二步:在测试类上添加注解 @RunWith(PowerMockRunner.class) 和 @PrepareForTest({要测试的类.class}). 例: @RunWith(PowerMockRunner.class) @PrepareForTest({StaticPrivateTest.class}) public class StaticPrivateTest { } 第三步:使用 PowerMockitoPowerMockito.mockStaticClass() 方法对这个私有静态类进行 mock。 例: mockStaticClass(StaticPrivateTest.class); 第四步:使用 when() 这个关键字指定mock的方法,再使用thenReturn 等设定想要达到的结果,最后将结果指定给一个变量 例: String expected = "hello, powermockito!"; when(StaticPrivateTest.doSomething()).thenReturn(expected); 第五步:通过反射获取类和方法对象,然后使用 PowerMockito静态方法 invokeStaticMethod() 调用私有静态方法。 例: Method method = PowerMockito.method(StaticPrivateTest.class, "doSomethingPrivate"); String result = (String) method.invoke(null); PowerMockito 和 PowerMock 都是深受欢迎的 Java 测试框架,能够方便地模拟各种 Java 代码的静态方法、私有方法和构造函数等,并且可以在 JUnit4 进行测试的基础上更进一步,实现更**灵活且全面的测试**。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值