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
をインポートする必要があります。
import org.powermock.modules.junit4.PowerMockRunner;
PowerMockRunnerはpowermock-module-junit4.jar
の一部です。 jarを明示的にインポートする必要があります
要件に応じて、このjarの依存関係を指定できます。これを参照してください link 。
グラドル依存関係を追加するだけです
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
」を手動で追加する必要がありました。
インストゥルメンタルテストの場合は、androidTestImplementation "org.powermock:powermock-module-junit4:1.6.4"を使用する必要があります
しかし、その後、PowerMockを機器テストで使用できないことがわかりました。
PowerMockはJVMバイトコード操作を使用しているため、デバイスで実行した場合、PowerMockはAndroidでは動作しません。JVMで実行しても動作します。
( この問題へのリンク )