无法解析符号PowerMockRunner

时间:2014-07-31 14:50:52

标签: java unit-testing mocking mockito powermock

我第一次尝试使用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

7 个答案:

答案 0 :(得分:41)

PowerMockRunner是powermock-module-junit4.jar的一部分。您需要显式导入此jar

您可以根据需要指定此jar的依赖项。 请参阅此link

答案 1 :(得分:26)

您需要按如下方式导入PowerMockRunner

import org.powermock.modules.junit4.PowerMockRunner;

答案 2 :(得分:15)

您只需添加gradle依赖

testCompile "org.powermock:powermock-module-junit4:1.6.4"

或者如果您使用的是Android Studio版本3 +

testImplementation "org.powermock:powermock-module-junit4:1.6.4"

答案 3 :(得分:7)

我遇到了这个错误,因为我的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>

答案 4 :(得分:1)

我也遇到了类似的错误。虽然罐子已经在类路径中,但eclipse并没有建议导入PowerMockRunner类。它给出了错误&#34; Class无法解析为类型&#34;。我不得不手动添加导入&#34; org.powermock.modules.junit4.PowerMockRunner&#34;。

答案 5 :(得分:0)

对于工具测试,您必须使用androidTestImplementation“ org.powermock:powermock-module-junit4:1.6.4”

但是后来我发现,您不能将PowerMock用于仪器测试:

  

如果您在设备上运行PowerMock,则无法在Android上运行   PowerMock正在使用JVM字节码操作。如果您运行它将正常工作   但是它在JVM上。

link to this problem

答案 6 :(得分:0)

我刚刚遇到了完全相同的问题,并且两个依赖项都已包含在 pom.xml 中。

对我来说,结果是 Intellij 缓存问题,并使缓存无效对我有用。

步骤如下:

IntelliJ -> File Menu -> Invalidate Caches -> Invalidate and Restart