私の質問: このクラスがテスト スイートから実行されたときに、失敗したテスト クラスの名前を Maven Surefire (または JUnit?) に強制的に表示させる方法はありますか?
さて、長い話です。
2 つの JUnit テストを起動する JUnit テスト スイートがあるとします。
テストクラスの例:
public class TestOne {
@Test
public void foo() {
assertTrue(false);
}
@Test
public void bar() {
assertTrue(false);
}
}
@UnitTest
public class TestTwo {
@Test
public void foo() {
assertFalse(true);
}
}
そしてテストスイート:
@RunWith(Suite.class)
@SuiteClasses(value = { TestOne.class, TestTwo.class })
public class MySuite {
}
ここで、テスト スイート ( mvn test -Dtest=MySuite
) を実行すると、次のエラーが発生します。
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running caf.opm.preclosing.junit.MySuite
Tests run: 3, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec <<< FAILURE!
Results :
Failed tests:
foo(my.project.junit.TestOne)
bar(my.project.junit.TestOne)
foo(my.project.junit.TestTwo)
Tests run: 3, Failures: 3, Errors: 0, Skipped: 0
これらの行を読むと、失敗しているクラスとテストを簡単に検出できます。
ただし、target/surefire-reports/
ディレクトリにMySuite.txt
は、3 つのテストが失敗しているファイルが 1 つしかありません。このような状況の結果の 1 つは、Hudson ビルドで次の情報が表示されることです。
All Failed Tests
Test Name Duration Age
>>> my.project.junit.MySuite.foo 0.0 1
>>> my.project.junit.MySuite.bar 0.0 1
>>> my.project.junit.MySuite.foo 0.0 1
ご覧のとおり、失敗したテストを特定するのが難しくなっています。たとえば、asTestOne.foo()
とTestTwo.foo()
failed のようMySuite.foo
に、JUnit レポートに 2 つのエラーがありました。もちろん、失敗したテストのログを読み取ることでテスト クラスの名前を取得できますが、それは実際の解決策ではありません...
だから私の質問は、Surefire(またはJUnit?)にテストクラスの名前を示すように強制できるかどうかを知ることです。
ありがとう。