对于 Java 中的参数化测试,jUnit 4.11 (@Parameters(name="namestring")) 中公开的“自定义测试名称”功能是否可以与 Google junitparams 中的任何功能相结合?
我有一个 Java 测试,它循环遍历包含一组 View 名称的文件以进行比较。希望每个比较都作为单独的测试实例报告,而不是报告单个测试,每个测试名称都根据作为输入提供的 View 名称进行自定义。
理想情况下,希望使用 junitparams @FileParameter 加载包含名称集的文件,将字符串传递到 jUnit 'name=' 以用作测试名称并且也作为输入传递到测试中。 “@FileParameter”和“name=”功能独立实现都相对简单。
根据其文档页面,junitparams 与 jUnit 4.11 “兼容”,但我还没有找到结合上述两个功能的方法。虽然我可以为同一测试提供 @FileParameter 和 @Parameters 表示法,而不会出现语法或运行时错误,但运行结果似乎忽略了后者的存在。
有人做过吗?有更好/更简单的选择吗?第一次向交易所提出真正的问题,所以请耐心等待......
=cjs
最佳答案
使用 @Parameters
注释的 JUnit 测试必须使用
@RunWith(Parameterized.class)
但是 junitparams 使用它自己的运行器
@RunWith(JUnitParamsRunner.class)
JUnit 测试只能使用单个运行程序,因此我不知道它们如何一起工作,除非有人将两个运行程序合并为一个。
最简单的解决方案是放弃 junitparams 并实现从输入文件读取数据并将其转换为参数列表的逻辑,以便您可以从使用 @Parameters
注释的方法返回该列表。
另一个解决方案是修改 JUnitParamsRunner
使其行为更像Parameterized
运行程序,例如为从输入文件读取的每个参数生成一个具有不同名称的测试。
另请参阅:
关于java - 使用 junitparams @FileParameter 在 Java : Combine 'custom test name' feature (@Parameters(name ="namestring")) in jUnit 4. 11 中进行参数化 jUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314505/