java - PowerMockito。模拟静态方法。为什么 PowerMockito#stub 不起作用?

标签 java unit-testing mockito powermock stubbing

我只想模拟类中的一个静态方法,所有其他方法都应该像真实对象一样工作。

代码:

public class ArrTest {

    public static int myMethod (int arr []) {           
        return 777;
    }
}

测试此方法:

public class ArrTestTest {
    @Test
    public void myMethodTest(){        
        PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
        System.out.println(ArrTest.myMethod(null));
    }
}

在输出中我看到 777 但我想看到 0;

我做错了什么?

最佳答案

您的方法是正确的,但是您缺少使 PowerMockito 检测类并使用适当的测试运行程序的注释:

@PrepareForTest(ArrTest.class)
@RunWith(PowerMockRunner.class)
public class ArrTestTest {
    @Test
    public void myMethodTest(){
        PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
        System.out.println(ArrTest.myMethod(null));
    }
}

编辑:

要解决评论中的后续问题 - 如果您已经有一个测试运行器并且不能使用 PowerMockRunner,您可以使用 PowerMockRule 来获得相同的结果:

@PrepareForTest(ArrTest.class)
public class ArrTestTest {

    @Rule
    public PowerMockRule rule = new PowerMockRule();

    @Test
    public void myMethodTest(){
        PowerMockito.stub(PowerMockito.method(ArrTest.class, "myMethod")).toReturn(0);
        System.out.println(ArrTest.myMethod(null));
    }
}

关于java - PowerMockito。模拟静态方法。为什么 PowerMockito#stub 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604528/

相关文章:

c - Valgrind 使用 g_test_trap_subprocess () 给出可能丢失的内存

java - TestNG - 构造函数上的@Test

java - 递归返回二维数组中元素的位置

javascript - 用 Jest 模拟 NextJS 路由器事件

java - Camel : Mock a processor to test Route

mocking - Hybris Mockito : Getting Exception there is no LocaleProvider for (detached) model

java - 使用 Mockito 模拟 EntityManager 的查找方法?

用于将文本行换行到最大行宽的 Java 代码

java - TreeTableView TableMenuButton 设置 Action

java - 日历 API 返回的数据不正确