首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powermockito verifystatic的问题

Powermockito verifystatic的问题
EN

Stack Overflow用户
提问于 2017-12-12 04:29:07
回答 1查看 2.1K关注 0票数 3

我有一个遗留类,它有一个静态void方法,我需要测试它:

代码语言:javascript
复制
public class A {

    public static void renameTo()
    {
        String ext = "." + this.fileName + ".backup";
        for (File file : getCSVFile()) {
            f.renameTo(new File(file.getAbsolutePath() + ext));
        }

    public static File[] getAllFiles()
    {
        //logic to read the CSV files from the class path
    }


}

现在,我已经使用PowerMockito为它编写了一个测试用例,如下所示。现在的问题是,即使只调用renameTo(),如果我调用PowerMockito.verifyStatic( Mockito.times(10)),测试仍然通过

代码语言:javascript
复制
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
@PowerMockIgnore("javax.management.*")
public class ATest {

    @Test
    public void testRenameTo() throws Exception {
        PowerMockito.mockStatic(A.class);
        A.renameTo();
        PowerMockito.verifyStatic( Mockito.times(1));
        //PowerMockito.verifyStatic( Mockito.times(5));//Passes even though the mehod is called only once    
        //PowerMockito.verifyStatic( Mockito.times(10);//Passes even though the mehod is called only once    
    } 
}

有人能解释一下这个问题吗?我可能做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 04:49:09

根据documentation,在测试后需要首先调用verifyStatic,然后调用A.renameTo()来告诉它要验证哪个静态方法。示例:

代码语言:javascript
复制
// run test
A.renameTo();

// verify interaction
PowerMockito.verifyStatic(A.class, Mockito.times(1));
A.renameTo();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47760899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档