Java Can-JUnit';要控制的超时消息?

Java Can-JUnit';要控制的超时消息?,java,build,junit,Java,Build,Junit,假设我有一个JUnit单元测试,它有两个部分,我不想将这些部分分成单独的方法。还假设我想要一个测试参数 我如何更改/截获/控制超时断言失败消息以指示测试的哪个部分超时 以下是一个无效的尝试: @Test(timeout = 1000) public void test() { try { // part one of the test } catch (Throwable e) { Assert.fail("Part one failed");

假设我有一个JUnit单元测试,它有两个部分,我不想将这些部分分成单独的方法。还假设我想要一个测试参数

我如何更改/截获/控制超时断言失败消息以指示测试的哪个部分超时

以下是一个无效的尝试:

@Test(timeout = 1000)
public void test() {
    try {
        // part one of the test
    } catch (Throwable e) {
        Assert.fail("Part one failed");
    }

    try {
        // part two of the test
    } catch (Throwable e) {
        Assert.fail("Part two failed");
    }
}

正如您所发现的,JUnit的超时功能相当有限。对于需要更多功能的计时相关测试,我已经使用过。您可以使用“命名等待”自定义消息:

with().pollInterval(ONE_HUNDERED_MILLISECONDS)
    .and().with().pollDelay(20, MILLISECONDS)
    .await("customer registration").until(
            costumerStatus(), equalTo(REGISTERED)
);

只是阅读文档,没有。超时会自动使测试失败。这并不是抛出异常——它是由测试运行程序完成的。您可以编写自己的测试运行程序,但仍然很难找到失败的地方。我建议你用不同的方式安排考试。您可能有自己的计时器,但测试失败。

它不能分为两个单独的测试吗?或者只使用一个部分进行一个测试,同时使用两个部分进行一个测试?@Apropos当然可以作为一种解决方法,但我想知道是否有一种直接的方法可以做到这一点,而不仅仅是使用
timeout
和默认的测试运行程序。您可以编写自己的运行程序,让测试在进入每个块之前设置一个标志,然后您的运行程序在失败时读取正确的消息。