如何从JUnit的TestResult获取测试的运行执行时间细节?

时间:2013-08-25 19:12:07

标签: junit

我是JUnit的新手,但这就是我想要做的事情:

  • 使用我的DataGenerator类生成数据;
  • 实例化测试类MyTestClass
  • 传递给MyTestClass测试数据生成的数据(第一步)
  • 运行测试
  • 收集TestResult结果

有了上述所有功能,但我无法在 TestResult 对象中看到任何计时信息(完成测试所花费的时间)。这里做错了什么?

上面的方法是因为我需要使用相同的数据在其他测试类上运行它。

    DataGenerator testData = new DataGenerator();
    MyTestClass myTestClass = new MyTestClass("mytestmethod");
    myTestClass.setBaseLine(testData);
    try {
        TestResult testResult = myTestClass.run();
        System.out.println(testResult.wasSuccessful());
    } catch (Throwable ex) {
        Logger.getLogger(TestSupervisor.class.getName()).log(Level.SEVERE, null, ex);
    }

1 个答案:

答案 0 :(得分:0)

JUnit 4有一个超时注释,如果测试时间太长,将无法通过测试。

//this test will fail if it takes longer than 1 sec
@Test(timeout = 1000)
public void myTest(){
   ...
}

我认为您可以通过使用更好的TestFixture解决DataGenerator问题。

如果您使用DataGenerator的所有测试都在同一个测试类中,则可以使用@BeforeClass@AfterClass注释来设置和拆除跨测试使用的数据。 (具有这些注释的那些方法仅在运行所有测试之前/之后调用一次。)