PowerMock 和 Mockito 不适用于 TestNG

PowerMock and Mockito not working for TestNG

我有一个带有静态方法的实用程序class

public class A {
    public static boolean test1(){
           // Do something
           return true;
    }       
}

我正在尝试使用 Powermockito 模拟 test1 并使用 TestNG 进行测试

@PrepareForTest(A.class)
public class UnitTest{

   @Test
   public void testTest1() {
      PowerMockito.mockStatic(A.class);
      when(A.test1()).thenReturn(false);
   }
}

https://code.google.com/p/powermock/wiki/TestNG_usage 形容我这样做。

但是,在 "when(A.test1()).thenReturn(false);" 中,它会在 Mockito.when 设置 test1() 方法期间调用实际方法 test1()。因此,我认为设置不正确,无法将 Class A 识别为 Mock

我是不是做错了什么?

我在 pom.xml 中的依赖 -

<dependency>
   <groupId>org.powermock</groupId>
   <artifactId>powermock-api-mockito</artifactId>
   <scope>test</scope>
   <version>1.6.2</version>
</dependency>
<dependency>
   <groupId>org.powermock</groupId>
   <artifactId>powermock-module-testng</artifactId>
   <version>1.6.2</version>
   <scope>test</scope>
</dependency>

在@Damien Beaufils 的评论之后,我尝试了更多 google 并最终在 powermock 问题中找到了一个 post; google 组描述了同样的问题。

解决方案是您的测试应该扩展 PowerMockTestCase(从 testng powermock module 导入,即 org.powermock.modules.testng

更多信息 - code.google.com/p/powermock/issues/detail?id=54#c9