动态创建的测试套件中不会收集故障

时间:2016-07-21 11:11:10

标签: java unit-testing junit test-suite test-runner

我有一个jar文件,我从它的测试类中反映出来(junit test)。

我创建了TestSuite实例并将测试添加到其中。

为了检查我的代码,我试图只在测试套件中添加一个示例测试类。

TestSuite suite = new TestSuite();
suite.addTest(new JUnit4TestAdapter(ExampleTest.class));

然后我调用了suite.run()来运行测试:

TestResult result = new TestResult();
suite.run(result);

问题在于,当测试完成时,应该在结果中的失败列表为空。

Enumeration<TestFailure> failures = result.failures(); // = empty list

如何使用testSuite解决故障?如果我使用JUnitCore.runclasses,我会得到失败列表,但它不能与TestSuite的实例一起使用,我必须使用它,因为我将测试类作为输入。

修改-1:

如果可以创建一个扩展TestSuite的类并动态地向该套件添加类,那么它将有利于我的需求。
任何建议都会很棒。

修改-2:

通过网络搜索,我看到了failuretestFailure之间的区别。如何使用testFailure测试失败而不是失败?

1 个答案:

答案 0 :(得分:0)

经过多次调试后,我发现TestResult对象确实捕获了故障,但将其报告为错误(断言错误)。
我还发现TestResult.errors()返回了TestFailure的枚举器。每个TestFailure都包含有关抛出异常的信息,因此我可以通过检查哪些错误是断言错误而哪些错误是错误来区分错误和错误。