我在我的项目中有一对测试,我想在不同的方法中按顺序运行。通常我会用一个DataProvider中生成输入测试:TestNG测试可以作为DataProviders吗?
@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达到我想要什么,但我想知道是否有更聪明的方式来做到这一点。
我认为有一个返回值的测试方法不是一个很好的设计。也许你想看看嘲笑(例如http://mockito.org/)? – LiMuBei
我认为这可能不是最理想的。这些是黑盒测试,与代码非常隔离。我在test1()中发生了复杂的事件,但我只需要在test2()中声明其中一个事件的状态。在被测系统中发生一切都很困难,但这里的耦合看起来很自然,因为除了test1()和test2()之外没有别的东西来改变对象的状态(如果存在的话,它是一个缺陷),如果test1()通过,我只需要执行test2()。 –
似乎有一个名为'dependsOnMethods'的测试注释中有一个选项可以做你想做的事情,参见http://www.tutorialspoint.com/testng/testng_dependency_test.htm – LiMuBei