GradleでEnclosedテストが2回実行されることの対策

@irofさんのエントリーで、GradleでEnclosedのテストが二回実行されるんだ
「あとではまる」とブックマークしたらば、3ヶ月後にちゃんとはまりましたw

で、原因ですが、Groovyでコンパイルされた後のネストクラスが、トップレベルのクラスとして認識されるため、Eclosedで実行され、かつ通常のJUnitテストとして実行されるのが、おそらくは原因。

回避策は2つ。
1つはEnclosedテストランナーを利用しないw
というか、@RunWithの部分をコメントアウトすればOK。

もう一つは、テストの実行時に除外クラスを指定すること。つまり、build.gradle に次のように設定する。

test {
exclude '**/*$*'
}

ネストクラスやインナークラスは、「アウタークラス$インナークラス」となるため、$で判断してます。

exclude '**/*Test$*'

でもいいかも