我第一次尝试使用Powermock
我使用build。Gradle和添加:
dependencies {
...
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'org.powermock:powermock-api-mockito:1.5.5'
}
现在我看看我的测试类,它有:
import org.junit.Before;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.powermock.core.classloader.annotations.PrepareForTest;
@RunWith(PowerMockRunner.class)
@PrepareForTest(GeoUtils.class)
并得到这个错误:
@RunWith(PowerMockRunner.class)
^
cannot resolve symbol PowerMockRunner
为什么它能解析PrepareForTest
而不能解析PowerMockRunner
?
PowerMockRunner是powermock-module-junit4.jar
的一部分。您需要显式导入这个jar
您可以根据您的需求指定此jar的依赖项。请参阅此链接。
需要按照以下步骤导入PowerMockRunner
:
import org.powermock.modules.junit4.PowerMockRunner;
你只需要添加gradle依赖
testCompile "org.powermock:powermock-module-junit4:1.6.4"
或者如果你使用的是Android Studio版本3+
testImplementation "org.powermock:powermock-module-junit4:1.6.4"
我遇到这个错误是因为我只在我的pom.xml中添加了以下依赖项中的第一个。请确保将PowerMock的以下maven依赖项添加到您的pom.xml中。
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.3</version>
</dependency>
我也遇到了类似的错误。虽然jar已经在类路径中,但是eclipse并不建议导入PowerMockRunner类。它给出错误"类无法解析为类型"。我必须手动添加导入"org.powermock.modules.junit4.PowerMockRunner
"。
我刚才遇到了完全相同的问题,这两个依赖项都已经包含在pom.xml中。
对我来说,原来是Intellij缓存问题,无效缓存对我有效。
步骤如下:
IntelliJ→文件菜单->使缓存无效->
对于仪器测试,您必须使用androidtestimimplementation "org.powermock:powermock-module-junit4 . 1.6.4"
但后来我发现,你不能使用PowerMock与仪器测试:
如果你在设备上运行PowerMock,它将无法在Android上运行PowerMock使用JVM字节代码操作。如果你跑,它会起作用的
(链接到这个问题)