是否可以以编程方式生成JUnit测试用例和套件?

Uri*_*Uri 17 java junit unit-testing junit4

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

我的最终目标是建立一个测试套件,组织成子测试套件,每个规则都有一个测试用例.

一种选择是将所有这些规则硬编码为测试.这是丑陋的,耗时的,不灵活的.

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

理想情况下,我希望有一个可以读取文件的测试套件,然后在其中定义子套件和测试.所有这些测试都可以从表文件采取了一定的值进行初始化,在我们的系统中运行的固定入口点,然后调用基于预期值的结果会验证功能.

是否有合理的方法只使用Java来解决这个问题?

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

Kat*_*one 17

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

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


ank*_*kon 8

你有没有考虑过使用FIT

您似乎已准备好表格,"业务规则"听起来像"商务人士使用Excel编写它们".

FIT是一个基于具有输入 - >预期输出映射的表来检查测试的系统,并且可以使用用于运行这些测试的开源Java库.