5

私の質問: このクラスがテスト スイートから実行されたときに、失敗したテスト クラスの名前を 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?)にテストクラスの名前を示すように強制できるかどうかを知ることです。

ありがとう。

4

1 に答える 1

0

テストクラスごとに1つのファイルを取得するので、これを理解するのに少し時間がかかりました。テストスイートを使用しています。

テストスイートを使用する場合、すべてのテスト結果は、スイートの名前を持つ単一のファイルになります。

この動作を変更するオプションはありません。機能リクエストを提出してみてください。

于 2012-03-02T13:16:13.227 に答える