1

背景:

我们的测试套件使用基于 JUnit 的内部开发的测试框架。我们的一些测试使用 JUnit 的参数化功能来测试各种不同的测试数据,例如布局测试(我们使用 Galen 框架),我们希望在不同的窗口分辨率下验证正确的行为。

我们的 TestCaseRule 应用于基类中的所有测试,将失败的测试保存到数据库中,从那里我们可以通过 Web 界面浏览失败。

问题:

JUnit 的 Parameterized Runner 为每个失败的测试 + 参数组合创建一个失败实例。

这意味着,如果我有一个包含例如 3 个测试的类,并且每个测试运行 6 次(6 个参数),如果所有测试都失败,我的报告中会出现 6x3=18 失败,而不是(期望的)3。因此我们的报告获得完全不同的含义并变得无用...

期望:

我用谷歌搜索了很多,但不幸的是找不到面临同样问题的人。对我来说最好的解决方案是,如果我能让 JUnit 合并每个方法的所有失败并连接堆栈跟踪,那么我真的可以确保一种方法最多导致 1 次失败。我也不想跳过所有以下测试,所以我不会错过将在不同参数上生成的失败。

我尝试了反射;在 @Before 方法中获取参数数据,迭代测试方法,注入参数并最终阻止要执行的实际测试,但它非常 hacky 并且由于其测试范围缺乏而不能代表可接受的解决方案。


我感谢所有帮助尝试!

4

0 回答 0