1

単体テストを実行しようとすると、AssertJ で NoSuchMethodError が発生します。make ステップは正常に機能し、assertThat() の実装に移動すると、正常に機能します。

モジュールの依存関係は、build.gradle でコンパイルの依存関係として定義したように、org.assertj:assertj-code:1.2.0 を使用していることを示しています (はい、コンパイルしてテストしません)。単体テストは統合テストであるため、モジュールのメイン クラスパス内に存在するため、これは意図的なものです。iml ファイルには以下が含まれます。

<orderEntry type="library" name="Gradle: org.assertj:assertj-core:1.2.0" level="project" />

私のテスト例は次のとおりです。

import org.assertj.core.api.Assertions;
import org.junit.Test;

public class X {
    @Test
    public void x(){
        Assertions.assertThat(1).isEqualTo(1);
    }
}

実行すると、次のようになります。

java.lang.NoSuchMethodError: org.assertj.core.api.Assertions.assertThat(I)Lorg/assertj/core/api/IntegerAssert;

実行構成を見ると、クラスパスが正しいモジュール (AssertJ を含むモジュール) に設定されています。

キャッシュを無効化しようとしましたが、役に立ちませんでした。

私は現在アイデアがありません(しゃれは意図されていません)。これを前に見たことがある人はいますか?または、トラブルシューティングの進め方の手がかりをお持ちですか?

4

1 に答える 1

2

それを見つけた。

新しいバージョンの AssertJ をインポートする別のモジュールがありました。そしてどういうわけか(IntelliJのバグのようです)私のランタイムは代わりにそれを使用していました。

報告されたバグを追跡します: https://youtrack.jetbrains.com/issue/IDEA-156718および更新を投稿します。

于 2016-05-27T11:38:05.847 に答える