Javolution测试模式,注意事项和注意事项

时间:2008-12-11 09:33:04

标签: java unit-testing

在为Javolution测试编写测试时,有哪些模式和注意事项?特别是我想知道:

  • TestCase.execute()不允许抛出异常。怎么处理他们?将Rethrow作为RuntimeException或存储在变量中并在TestCase.validate()或其他内容中断言?
  • 是否有任何图形运行器向您显示失败的测试,即在Eclipse中?也许有人编写了一个JUnit-Wrapper,以便我可以使用Eclipse JUnit Runner?

2 个答案:

答案 0 :(得分:1)

javadoc和javolution源代码提供了一些示例和设计原理。 另请参阅an article on serverside

Javolution测试只包含一个测试,并且测试代码的执行与验证分离为不同的方法execute()和validate()。因此,相同的测试类可以用于回归测试和速度测试(省略对validate()的调用)。此外,许多测试的执行都是可以并行化的。

这种分离的缺点是:您将获得更多的内存消耗,因为执行运行代码的结果需要保存,直到调用validate()。 (将这些结果释放到tearDown可能是一个好主意。) 如果验证来自与练习不同的类,那么调试失败可能很困难。

答案 1 :(得分:0)

您可以通过使用以下JUnit适配器并在eclipse中运行它来获得某种图形testrunner。您可以单独启动/调试失败的测试。不幸的是,图形表示不包含任何有关实际测试的内容 - 它只显示数字[0],[1]等。

@RunWith(Parameterized.class) 公共类JavolutionJUnit4Adapter {

protected final javolution.testing.TestCase test;

public JavolutionJUnit4Adapter(javolution.testing.TestCase testcase) {
    this.test = testcase;
}

@org.junit.Test
public void executeTest() throws Exception {
    enter(REGRESSION);
    try {
        new javolution.testing.TestSuite() {
            @Override
            public void run() {
                test(test);
            }
        }.run();
    } finally {
        exit();
    }
}

@Parameters
public static Collection<javolution.testing.TestCase[]> data() {
    javolution.testing.TestSuite fp = new WhateverSuiteYouWantToRun();
    List<javolution.testing.TestCase> tests = fp.getTestCases();
    Collection<javolution.testing.TestCase[]> res = new ArrayList<javolution.testing.TestCase[]>();
    for (javolution.testing.TestCase t : tests) {
        res.add(new javolution.testing.TestCase[] { t });
    }
    return res;
}

}