3

then次のブロックを使用して簡単な機能メソッドを作成しました。

then:
1 * view.setAttachments({ it?.size == 3 })

しかし、gradle testエラーで失敗します:

initializationError

java.lang.Exception: No runnable methods
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:169)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:104)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:355)
    ...

initializationError

java.lang.Exception: Test class should have exactly one public zero-argument constructor
    at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:147)
    at org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:124)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:355)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:76)
    ...

クロージャーを削除すると、エラーが発生しなくなることに気付きました

then:
1 * view.setAttachments(_) // everything works well without closure!

Spock は、別のテスト メソッドのようにクロージャを実行しようとしているようです...それを回避するにはどうすればよいですか?

4

4 に答える 4

4

私の場合の問題は、テストファイル/クラスがTestではなく で終わっていることですSpec。問題を解決した変更 (例: SomeServiceTest-> SomeServiceSpec)。

于 2014-11-25T01:28:51.270 に答える
0

私も同じ問題を抱えていました。私にとっては、テストファイルを「src」ディレクトリから「Test」ディレクトリに移動する作業をしました。

于 2020-03-03T17:49:36.007 に答える