mike-neckのブログ

Java or Groovy or Swift or Golang

GRADLE-2846にはまってるっぽい件

こんにちわ、みけです。

表題の件についてハマっていますので、誰か有益な情報知ってたら教えろください。


GRADLE-2846

このバグは次の条件でテストを実行した時に発生します。

  • Gradleのバージョン1.7
  • Java8-ea-b99

【参考】GRADLE-2846

エラーメッセージは次のような感じ。

failed to read class file /Users/mike/hoge/build/classes/test/pkg/name/HogeTest$Foo.class

...

Caused by: java.lang.RuntimeException
        at org.objectweb.asm.MethodVisitor.visitTypeAnnotation(Unknown Source)
        at org.objectweb.asm.ClassReader.b(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at org.gradle.api.internal.tasks.testing.detection.AbstractTestFrameworkDetector.classVisitor(AbstractTestFrameworkDetector.java:117)
        ... 68 more

で、このバグ、まだステータスがOPENで、今の僕の環境で再現してしまいます。

(このバグ自体を今知ったレベル)

  • Gradleのバージョン2.2
  • Java1.8-u25

テストクラスはこんな感じ

public class HogeTest {

    @Test
    public void test() {
        Bar foo = new Foo(1);
        assertThat(foo.cal(), is (2));
    }

    private class Foo implements Bar {
        private final int baz;
        Foo(int baz) {
            this.baz = baz;
        }
        @Override public int cal() {return 2 * baz;}
    }
}

一時的な対処法

一応、クラスファイルのスキャンニングを切ることで対処されるらしいです。

test {
    scanForTestClasses = false
    include '**/*Test.*'
}

【参考】gradle-test-fails-with-error


以上

(´-`).oO(ここ最近Java8書いてたけど、こんなの発生してなかったけどな…)