Hatena::ブログ(Diary)

日々常々 Twitter

2012-04-30

GradleでEnclosedのテストが二回実行されるんだ

特に理由はないんですけどGradle良い気がするので手を出そうと思い始めて盛り上がって下がってを繰り返してる今日この頃です。今日この頃が数ヶ月続いてますけど大丈夫です。

で、まー、JavaなアレをGradleでアレしてるわけなんですけど、ふつーにEnclosedなテストを書いたらなんか変。

import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.Test;

@RunWith(Enclosed.class)
public class EnclosedTest {

  public static class NestedTest {
    @Test
    public void Enclosedのテスト() {
    }
  }
}

これを gradle test したら、こーなってた。

f:id:irof:20120430234247p:image

何故か二回実行されてます。

テスト対象として、コンパイル後の *.class ファイルでも見てんじゃないかなと予想。excludesで $ 含むのを避ければいい気がしたので、sourceSet.test.java.exclude に書いてみようと思ったんだけど、これはコンパイル対象だからダメ。どっか他に書ける場所あるかなー。コードは今度読む。


そんな訳で、現状のGradleさん(1.0-rc-3)のjavaプラグインさんのテスト状況。

RunWith(Enclosed.class)のんもちろん実行されない
↑にネストされたクラスのんなんか二回実行される
↑じゃないネストされたクラスのんなぜか実行される
インナークラスを持つクラスのん普通に実行される
インナークラスのんちゃんと実行されない

Enclosed経由で実行されて、自身のでまた実行されて、で二回って感じですかね。Enclosedなんていらなかったんや……


Mavenでやると普通にこう。

RunWith(Enclosed.class)のん実行されない
↑にネストされたクラスのん実行される
↑じゃないネストされたクラスのん実行されない
インナークラスを持つクラスのん実行される
インナークラスのん実行されない

なんか手はあるんだろうけど、普通に使えてくれないとなぁ……。JIRAは Enclosed で検索してもでてこなかた。コードは今度読む*1

http://issues.gradle.org/browse/GRADLE

----

(2012/08/08 追記)

sourceSet.test.java.exclude じゃなく test.exclude でいけるよーです。 @shuji_w6e さんありがとうございます!

http://d.hatena.ne.jp/shuji_w6e/20120808/1344386399

*1:大事なことなので二回

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証