gpt4 book ai didi

java - 使用不同的参数运行参数化的 JUnit 测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:16 27 4
gpt4 key购买 nike

我有一个如下所示的 JUnit 测试:

private final User user1;
private final User user2;

public UserTest(User user1, User user2) {
this.user1 = user1;
this.user2 = user2;
}

@Parameterized.Parameters
public static Collection<Object[]> userData() {
return Arrays.asList(new Object[][] {
{ new User("Tim", "Burton", "tim.burton"),
new User("tim", "burton", "timothy.burton") },
{ new User("Vincent", "van Gogh", "vincent.van.gogh"),
new User("vincent", "van-gogh", "vincent.vangogh") } });
}

@Test
public void testPositive() {
checkMatching(user1, user2);
}

现在所有测试都成功了,但我想为否定测试创建第二个@Parameterized.Parameters 列表。新方法应如下所示:

@Test
public void testNegative() {
checkFalseMatching(wrongUser1, wrongUser2);
}

是否可以使用特定于方法的参数?我将使用我已经为 testPositive() 方法创建的参数和为 testNegative() 方法创建的第二个参数列表。

我该怎么做?我可以为我的参数或类似的东西使用“范围”吗?

最佳答案

这里有几个选项。首先在构造函数中传入 3 或 4 个参数...

public UserTest(User equalUser1, User equalUser2, 
User notEqualUser1, User notEqualUser2);

另一种选择是使用@Enclosed 运行并将不同的参数集/测试分离到单独的内部类中。无论如何,这通常是一个很好的做法,因为如果您混合使用参数化测试和非参数化测试,您不希望多次运行非参数化测试。

另一种选择是使用 Theories 并使用 assumeThat 方法来检查参数是否在特定的集合中。

Example Theory with assumeThat

关于java - 使用不同的参数运行参数化的 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22474315/

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