web-dev-qa-db-ja.com

PowerMockはNoSuchMethodError(setMockName)をスローします

PowerMockitoを使用してコンストラクターをモックしようとしていますが、テストを実行するたびに次のエラーが発生します。

Java.lang.NoSuchMethodError: org.mockito.internal.creation.MockSettingsImpl.setMockName(Lorg/mockito/mock/MockName;)Lorg/mockito/internal/creation/settings/CreationSettings;
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.Java:107)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.Java:60)
at org.powermock.api.mockito.internal.expectation.DefaultConstructorExpectationSetup.createNewSubstituteMock(DefaultConstructorExpectationSetup.Java:105)
at org.powermock.api.mockito.internal.expectation.DefaultConstructorExpectationSetup.withAnyArguments(DefaultConstructorExpectationSetup.Java:71)

私のプロジェクトには次のPowerMockの依存関係があります。

  • org.powermock:powermock-module-junit4:1.5.6
  • org.powermock:powermock-mockito-release-full:1.5.6

プロジェクトの依存関係ツリーをトレースし、競合を修正して、mockito-all:1.9.5はビルドに含まれます。

15
Psycho Punch

私の問題は、プロジェクトの(推移的な)依存関係でjavassistのバージョンが競合するためです。私がやったことは、古いバージョンのjavassistをビルドに含めるすべての依存関係を検索し、それらを除外することでした。例えば:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.5.1-Final</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>
7
Psycho Punch

持っていた

org.mockito mockito-all 1.8.4

powermockの依存関係とは別にpom.xmlに追加し、これを削除しました。

6
Abhijeet

私にとって、Eclipseでは、この問題の修正はJava Build Path。Order and Exportタブをクリックします。WebApp Librariesをbottomに移動します。注、適切な場合、これにより、ソースが見つからないとEclipseから通知されたときに、サードパーティライブラリのソースを表示することもできます。

0
ununiform

私の場合、それは競合依存関係でした。 mockito-coreアーティファクトを除外した後、修正しました。

 <dependency>
        <groupId>com.googlecode.catch-exception</groupId>
        <artifactId>catch-exception</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
            </exclusion>
        </exclusions>
        <version>1.0.4</version>
        <scope>test</scope>
    </dependency>
0
Vitaly