gpt4 book ai didi

java - 将 JUnit 理论中的数据点绑定(bind)到特定变量

转载 作者:行者123 更新时间:2023-12-01 12:09:07 24 4
gpt4 key购买 nike

我有以下理论需要测试。在代码中,我希望变量 a 为偶数,变量 b 为奇数

@RunWith(Theories.class)
public class TestJunit{
// add the error
@DataPoints
public static Integer[] integersOdd() {
return new Integer[]{1, 3, 5};
}

@DataPoints
public static Integer[] integersEven() {
return new Integer[]{2, 4, 6};
}

@Theory
public void testAdd(Integer a , Integer b) {
...
}
}

现在我使用假设True 和验证函数,如下所示:

   public boolean validateInput(Integer a, Integer b){
Set<Integer> even = new HashSet<Integer>(Arrays.asList(integersEven()));
Set<Integer> odd = new HashSet<Integer>(Arrays.asList(integersOdd()));
return (even.contains(a) && odd.contains(b));
}

修正理论:

   @Theory
public void testAdd(Integer a , Integer b) {
Assume.assumeTrue(validateInput(a,b));
System.out.println("a="+a+", b="+b);
assertTrue(a+b>-1);
// add any test
}

这是一种非常肮脏的方式,因为 Java 将选择所有组合并丢弃 assumeTrue 处的输入。如果我有 10 个理论和 10 个数据点怎么办? Java 将尝试 100 种组合,而我只想要 10 种!

有什么巧妙的方法吗?可能是一些注释告诉 JUnit 从哪个 DataPoint 中选取变量值?

编辑:我发现的另一种方法是使用测试生成器。我正在使用 JUnit-QuickCheck [Read Here ] 根据我的变量所需的范围生成随机数据。然后我将它们封装在一个类中,并将这个对象传递到我的理论中进行测试。

最佳答案

JUnit 4.12 允许在理论上命名数据点。这是original pull request ,这是 release notes for 4.12 - 查找“添加了匹配特定数据点的机制”。

关于java - 将 JUnit 理论中的数据点绑定(bind)到特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27373605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com