我参加了以下测试班,它报告说第一次测试花了2秒,第二次花了4秒。我希望JUnit输出每个测试用例的时间,而不考虑@BeforeClass
或@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);
}
}
答案 0 :(得分:0)
@BeforeClass
和@AfterClass
为所有测试运行一个
您应该做的是在实例变量的帮助下使用@Before
和After
public class TimeTest {
long timeInMillis=0;
@Before
public void before(){
timeInMillis = System.currentTimeMillis();
}
@Test
public void test1() throws InterruptedException {
Thread.sleep(2000);
}
@Test
public void test2() throws InterruptedException {
Thread.sleep(2000);
}
@After
public static void after() throws InterruptedException {
long diff = System.currentTimeMillis() - timeInMillis;
// log the diff or cast it to seconds
}
}
答案 1 :(得分:0)
您不是第一个遇到此类问题的人。有很多在互联网上记录时间的示例。
我建议您使用JUnit @Rule
来解决问题并避免代码重复。 (您不想在每个测试类中都写timeInMillis = System.currentTimeMillis()
,对吗?)
There is an example的规则实施