【问题标题】:JUnit 5 and multiple input data (Java)JUnit 5 和多输入数据 (Java)
【发布时间】:2018-01-02 20:15:39
【问题描述】:

如何使用 JUnit 5 运行一系列计算测试,每个测试针对不同的输入数据和基准输出?

条件:计算应该只对每个输入执行一次,而不是对每个测试单独执行,因为它很耗时。

每个测试都会检查一个由已经不完美编写的计算模块输出的数字。将模块重构为可单独测试的子功能是不可行的。

【问题讨论】:

  • DataModelTest.readModel(java.lang.String,java.lang.String)' could not be resolved -- 类名是ModelTest,而不是DataModelTest
  • 请参阅:stackoverflow.com/questions/46897134/…(@davidxxx 的出色回答)您似乎在滥用 @MethodSource 注释,即“方法不得接受任何参数”。
  • @geneSummons - 该解决方案是仅通过测试方法读取所有参数的标准。我希望有一个函数可以读取参数并为测试方法提供预先计算的值 - 例如将它们作为属性的测试类的构造函数。但这似乎是被禁止的。

标签: java junit parameterized parameterized-unit-test


【解决方案1】:

快速解决办法是

  1. 读取所有数据并在构造函数中执行所有计算,将输出保存为数组/列表并对基准输出执行相同操作。

  2. 调用@ParameterizedTests,@ValueSource 采用整数数组。他们将使用这些整数作为索引遍历存储为对象属性的列表。

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 2020-10-05
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多