java - 如何排除 @AfterClass 方法所花费的时间?
问题描述
我运行了以下测试类,它报告第一个测试用了 2 秒,第二个用了 4 秒。我希望 JUnit 输出每个测试用例的时间,而不考虑@BeforeClass
or@AfterClass
方法的时间。
但显然它只将@AfterClass
方法的时间包含在最后一个测试用例中,如果你问我,这根本没有意义。
有没有办法让 JUnit 仅输出每个测试用例所用时间的时间?
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class TimeTest {
@Test
public void test1() throws InterruptedException {
Thread.sleep(2000);
}
@Test
public void test2() throws InterruptedException {
Thread.sleep(2000);
}
@AfterClass
public static void afterClass() throws InterruptedException {
Thread.sleep(2000);
}
}
解决方案
你不是第一个遇到这样问题的人。互联网上有很多时间记录的例子。
我建议您使用 JUnit@Rule
来解决您的问题并避免代码重复。(你不想timeInMillis = System.currentTimeMillis()
在每个测试课上都写,是吗?)
有一个规则实现的例子
推荐阅读
- php - 从 MySQL 和 PHP 请求数据的问题
- azure - 如何使用 ARM 模板从虚拟机规模集中获取 VM 的私有 IP?
- pandas - python3 pandas:如何快速找到具有值的最新月份数不为0
- c# - 应该为同一个字符串锁定什么?
- timeout - 气流 Gunicorn 超时
- c++ - 关于用 2、3 或 4 步爬第 n 级楼梯的问题
- java - HTTP 状态 404 - 为什么服务器找不到我映射到的 servlet?
- python - 使用 .destroy() 关闭弹出窗口的按钮会给出未定义弹出窗口的错误。使用 Python tkinter
- javascript - 用文字改变图像
- css - 如何在 Bootstrap 5 Switch 中更改旋钮的颜色