2015-12-10 104 views
1

目标是提供完全相同测试方法的不同变体(就像参数化测试一样)。问题是必要的测试运行的实际数量取决于并随时发现。扩展JUnit 4.11:Unrooted测试

最初的想法是创建测试的子元素(子)(使用测试方法的描述对象addChild)。

运行代码时Eclipse View显示所有发现和执行的测试都置于“未根检测”下。使用description.getTestClass()方法描述测试方法的Description实例。

有没有人可以解释发生了什么,如果可能的话给出解决方案?

我扩展了BlockJUnit4ClassRunner。还通过使用Description.addChild增加了一个孩子。

+0

你看过http://stackoverflow.com/questions/120889/unrooted-tests? – maksimov

+0

是的。这个问题是不同的。这个问题可能与动态扩展测试用例套件有关。它接合了一个几乎没有记录的边缘案例。我将进行模拟测试运行(只是报告使用不同数据结构的东西)并查看它是否正确显示。也许我会得到更多的内心。我希望避免这种情况。 –

回答

1

eclipse的测试运行器是一个名为RemoteTestRunner的自定义实现。从源代码中我了解到,侦听器机制不负责创建测试用例树,而是实际的Runner结构(getDescription)和实际的子节点。但是,再次不是描述的孩子,而是每个Runner实例的孩子。

总而言之,所有代码都比阅读和理解更难。

So Unrooted testcases只是侦听器进程报告的测试,但无法正确匹配实际的Runner结构。