私は独特の問題に直面しています。基本的に、Mockito/PowerMockitoテストを正常に実行すると、つまり「Junitテストとして実行」すると、次のエラーが表示されます:
Java.lang.NoSuchMethodError: org.mockito.mock.MockCreationSettings.isUsingConstructor()Z
at org.mockito.internal.creation.instance.InstantiatorProvider.getInstantiator(InstantiatorProvider.Java:10)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.Java:110)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.Java:58)
at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.Java:203)
at org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.Java:106)
at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.Java:54)
at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.Java:90)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.Java:292)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.Java:127)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.Java:82)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.Java:282)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.Java:86)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.Java:49)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.Java:207)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.Java:146)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.Java:120)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.Java:33)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.Java:45)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.Java:122)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.Java:106)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.Java:53)
at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.Java:59)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
私は、Maven依存関係とビルドパスに必要なすべてのjarを追加しようとしましたが、役に立ちませんでした。
ただし、実行構成->クラスパス->ユーザーエントリでjarを手動で追加しました。次に、通常どおりテストを実行し、緑色のステータスバーを表示しました。つまり、完全に実行されました。
これで私を助けてください。私の仕事に影響するこれらの迷惑な変更なしでテストを実行する必要があります。テストを通常どおり実行できるようにするにはどうすればいいですか?つまり、設定を実行するのではなく、ビルドパスにjarを追加して「junitテストとして実行」するだけでいいですか?
私にとってmockitoバージョンは問題を引き起こしていました。 pomファイルに明示的に追加した場合は、mockito依存関係を削除してください。削除しました-
testCompile 'org.mockito:mockito-all:1.9.5'
私のgradleファイルからの行。競合につながる可能性があるものを強制的に追加する代わりに、パワーモックが解決し、必要なmockito依存関係を追加します。
だから私にとって依存関係は-
testCompile "org.powermock:powermock-module-junit4:1.6.4"
testCompile "org.powermock:powermock-module-junit4-rule:1.6.4"
testCompile "org.powermock:powermock-api-mockito:1.6.4"
testCompile "org.powermock:powermock-classloading-xstream:1.6.4"
あなたが持っているかもしれないjunitや他のlib依存関係以外。
Mockitoバージョンに問題があると思います-コードを更新しました-
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.8.5'
に
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
IDEはMavenと同期する必要があります。これは、依存関係を追加して手動で行うことです。
残念ながら、Eclipseはこの動作をすぐに提供しません(または提供しませんでした)(シームレスに同期するIntelliJとは異なります)。
以前はソリューションが Maven Eclipseプラグイン で行われていましたが、ドキュメントを見ると、これを行うための最新の方法は Eclipse Maven Integration IDEのプラグインであるようです。