在为Javolution测试编写测试时,有哪些模式和注意事项?特别是我想知道:
答案 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;
}
}