小编Jus*_*ler的帖子

PowerMock,mockito,验证静态方法

我正在尝试让PowerMock与mockito一起使用,我在这里关注文档:http://code.google.com/p/powermock/wiki/MockitoUsage13.

为了简化一下,我们假设我有一个静态方法:

StaticObj.put(String key, String val) { ... }
Run Code Online (Sandbox Code Playgroud)

要测试的类是这样的:

public class ClassToTest {
    public void doSomething(Params p) {
        if (StringUtils.isNotBlank(p.getK()) StaticObj.put("k1", p.getK());
        if (StringUtils.isNotBlank(p.getX()) StaticObj.put("x1", p.getX());
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我想验证当它们不为空或为null时,为K和X调用StaticObj.put,所以我做了类似这样的事情:

public void testNormalCase() {
    // assume that mocking setup for statics already happened in some @Before function..
    Params params = new Params("k", "x");
    ClassToTest classToTest = new ClassToTest();
    classToTest.doSomething(params);

    // now I want to verify:
    PowerMockito.verifyStatic(times(1));
    StaticObj.put("k1", "k1");

    PowerMockito.verifyStatic(times(1));
    StaticObj.put("x1", "x");
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,这是我所期待的.什么不起作用,如果我注释掉K的验证,那么X的验证失败了!错误消息表明("x1","x")是预期的,但得到了("k1","k").为什么是这样?我没有正确编码吗?

此外,它让我相信以下类型的测试,可能完全通过错误的原因:

public void …
Run Code Online (Sandbox Code Playgroud)

java mockito powermock

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

mockito ×1

powermock ×1