我必须为一组复杂的业务规则编写一个非常大的测试套件,这些规则目前以几种表格形式捕获(例如,如果参数X Y Z如此之多,则该值应在V1和V2之间)。每个规则都有一个名称和自己的语义。

我的最终目标是要有一个测试套件,将其组织成子测试套件,并为每个规则提供一个测试案例。

一种选择是实际上将所有这些规则硬编码为测试。那是丑陋的,费时的并且不灵活的。

另一种方法是编写一个Python脚本,该脚本将读取规则文件并使用单元测试生成Java类。如果可以的话,我宁愿避免这种情况。另一种变化是使用Jython。

但是,理想情况下,我希望有一个测试套件可以读取文件,然后在其中定义子套件和测试。这些测试中的每一个都可能使用从表文件中获取的某些值进行初始化,在我们的系统中运行固定的入口点,然后根据期望的值对结果调用一些 validator 函数。

是否有合理的方法仅使用Java来实现这一目标?

更新:我可能在某种程度上简化了我们的规则。其中一些确实是表格形式(excel样式),另一些则更加模糊。尽管仍然存在一般问题,因为我可能不是第一个遇到此问题的人。

最佳答案

在JUnit 4中,您将需要查看Parameterized runner。它是为您描述的目的而创建的(数据驱动测试)。但是,它不会将它们组织成套件。

在Junit 3中,可以以编程方式创建TestSuite和Tests。答案在Junit Recipes中,如果需要,我可以对其进行扩展(请记住,JUnit 4可以运行Junit 3测试)。

07-24 09:38
查看更多