gpt4 book ai didi

java - 从 JUnit 测试时间中排除 @Before 方法持续时间

转载 作者:行者123 更新时间:2023-12-02 08:29:38 24 4
gpt4 key购买 nike

JUnit 看起来包括在报告我的测试时间时执行 @BeforeClass @Before 所花费的时间。

我正在使用 JUnit 4.12

junit timing

在本例中,测试显示 23.863 秒,总计 25.649 秒。当我手动检测所有方法时,这是分割:

10:11:20.074 [INFO] [mainId] beforeClass completed in 12516ms
10:11:40.083 [INFO] [mainId] beforeTest completed in 20009ms
10:11:44.171 [INFO] [mainId] start_test completed in 4076ms

因此,如果我添加 beforeTest 和 start_test 计时,我会接近 UI 中报告的时间。

  • 有没有办法告诉 JUnit 仅显示 start_test 时间?

现在我只是手动输出时间,如这篇文章中所示:https://stackoverflow.com/a/180191/1165140

更新2017-07-27实际上问题在于之前的测试方法(@Before)而不是我之前认为的@BeforeClass - 我的日志记录中出现错误。仍然在我看来,是否包含这个时间应该是可配置的。我在每次测试之前使用 @beforetest 设置数据。

我已经确认,夸大的时间会在 UI 中输出,并且会从命令行输出 maven Surefire XML。

最佳答案

public static class StopwatchTest {
private static final Logger logger = Logger.getLogger("");

private static void logInfo(Description description, String status, long nanos) {
String testName = description.getMethodName();
logger.info(String.format("Test %s %s, spent %d microseconds",
testName, status, TimeUnit.NANOSECONDS.toMicros(nanos)));
}

@Rule
public Stopwatch stopwatch = new Stopwatch() {
@Override
protected void succeeded(long nanos, Description description) {
logInfo(description, "succeeded", nanos);
}

@Override
protected void failed(long nanos, Throwable e, Description description) {
logInfo(description, "failed", nanos);
}

@Override
protected void skipped(long nanos, AssumptionViolatedException e, Description description) {
logInfo(description, "skipped", nanos);
}

@Override
protected void finished(long nanos, Description description) {
logInfo(description, "finished", nanos);
}
};

@Test
public void succeeds() {
}

@Test
public void fails() {
fail();
}

@Test
public void skips() {
assumeTrue(false);
}
}

取自 Stopwatch

关于java - 从 JUnit 测试时间中排除 @Before 方法持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45227226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com