我有同样的问题,我花了一段时间才弄清楚。我的设置是引入旧版本的 jboss.javassist,奇怪的是它完全阻止了 PowerMockRunner 工作。
值得注意的是,我也有一个混合的 JUnit / TestNG 环境。我之前尝试过添加多个surefire 提供程序的解决方案,但也没有用(使用surefire 2.14.1)。升级到 surefire 2.17 后,我的 JUnit 和 TestNG 测试都开始运行,而无需声明任何 surefire 提供程序。事实上,JUnit 提供程序为我抛出了一个错误,因为我正在使用组。显然,TestNG 提供者允许自由格式的文本(例如“集成”),而 JUnit 提供者需要一个类路径(例如“com.example.UnitTests”)。
这是我的插件部分...
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<groups>spring, unit, integration</groups>
<systemPropertyVariables>
<java.awt.headless>true</java.awt.headless>
<org.apache.activemq.default.directory.prefix>target/test/</org.apache.activemq.default.directory.prefix>
<log4j.configuration>file:${project.basedir}/src/test/resources/log4j.properties</log4j.configuration>
</systemPropertyVariables>
<argLine>${surefire.args}</argLine>
</configuration>
</plugin>
...以及相关的测试部门...
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<!--
PowerMock versions are compatible with specific Mockito versions.
https://code.google.com/p/powermock/wiki/MockitoUsage13
-->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.5.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.5.4</version>
<scope>test</scope>
</dependency>
<!-- without this PowerMock tests don't run in maven -->
<dependency>
<groupId>jboss</groupId>
<artifactId>javassist</artifactId>
<version>3.8.0.GA</version>
<scope>test</scope>
</dependency>