5

を使用して JUnit 4 テストを実行しています@RunWith(value = Parameterized.class)。これは問題なく動作します。ただし、34 個のテストのいずれかがタイムアウトすると、メッセージのみが表示されますjava.lang.Exception: test timed out after 15000 milliseconds。テストのパラメータも表示したいです。

私は以下のコードのようにそれをやろうとさえしました(ほとんどの場合、これは恐ろしい解決策です。メッセージをいつでも表示できるかどうかを確認したかっただけです)が、うまくいきませんでした。上記のメッセージが表示されました。

private String parameter;

@Test(timeout = 15000)
public void solveAll() {
    try {
        // ... do something that might take a long time
    }
    catch (Throwable e) {
        Assert.fail(this.parameter + " failed! Because of " + e.getMessage());
    }
}

this.parameterテストの結果がタイムアウトになったときにJUnitも表示するにはどうすればよいですか?

この問題を示す非常に単純なテスト クラスの例を次に示します。

public class ShowMyMessageTest {
    @Test(timeout=1000)
    public void test() {
        try {
            Thread.sleep(3000);
        }
        catch (Throwable e) {
            Assert.fail("Timeout reached with value 42");
        }
    }
}

これによりShowMyMessageTest、予想される「値42でタイムアウトに達しました」というメッセージが表示されることもあれば、「java.lang.Exception: test timed out after 1000 milliseconds」というメッセージしか表示されないこともあります。この場合、常に「値42でタイムアウトに達しました」を取得したいと思います。

4

1 に答える 1