gpt4 book ai didi

java - TestNG 测试可以作为 DataProvider 吗?

转载 作者:行者123 更新时间:2023-12-01 10:20:05 27 4
gpt4 key购买 nike

我的项目中有成对的测试,我想以单独的方法顺序运行它们。通常我会使用 DataProvider 来生成测试的输入:

@DataProvider
public Object[][] getUsers() {
// generate input for test2();
}

@Test(dataProvider = "getUsers")
public void test2(User user) {
assertSomething(user);
}

但是在这里我需要这两种方法来像测试一样工作,因为我有测试逻辑,这不属于数据提供者。

所以我想要这样的东西:

@Test
public Object test1() {
User user = createUser();
assertSomething(user);

return user.getProperty();
}

@Test // depends on test1 - I do not want to execute this test if test1 fails.
public void test2(Object userProperty) {
assertSomethingElse(userProperty);
}

事实上,我可以将 test1 中的逻辑放到 test2 中来实现我想要的,但我想知道是否有更智能的方法来做到这一点。

最佳答案

是的,有办法。我想这样的事情就是你想要的。与 JUnit 不同,TestNG 允许您在测试方法运行之前 Hook 并访问测试方法的参数,有点像使用 AOP 所做的那样:

@DataProvider
public Object[][] getUsers() {
int[][] multi = new int[][]{
{ 0, new User("Tom") },
{ 0, new User("Sally") }
};
return multi;
}

@BeforeMethod
public void setupBeforeEachTest(Object[] args) {
User x = (User)args[1];
x.modify();
}

@Test(dataProvider = "getUsers")
public void test1(User user) {
assertSomething(user);
}

@Test(dataProvider = "getUsers")
public void test2(User user) {
assertSomethingElse(user);
}

关于java - TestNG 测试可以作为 DataProvider 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653755/

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