在其他测试方法之前每次都调用一种测试方法

时间:2020-02-17 13:07:34

标签: java unit-testing testng

我有一个如下的测试方法,另外两个测试方法都依赖于此方法,并且该方法应该每次都在这两个方法之前运行,而不仅要在两个方法上都运行一次。

 @Test(dataProvider = "requestParameterProvider", groups = "jsonRequest")
 public void saveNewActivity_correctValues(Service service, 
 Map<String, Object> requestMap){}

 @Test(dependsOnMethods = "saveNewActivity_trackRequest_correctValues", dataProvider = "responseParameterProvider")
public void commitActivity_correctValues(Service service){}

@Test(dependsOnMethods = "saveNewActivity_trackRequest_correctValues", dataProvider = "exceptionParameterProvider")
public void failActivity_correctValues(Service service, FailureReason failureReason){}

在上述情况下,发生的情况是saveNewActivity_correctValues方法首先运行一次,然后再运行另外两个方法。但是我希望第一个方法在每个从属方法之前被调用两次,并作为单独的测试被调用一次。我不能把第一个方法作为@BeforeMethod,因为它已经是一个测试,并且拥有它自己的提供程序。

1 个答案:

答案 0 :(得分:2)

在所有测试之前对要运行的方法使用@Before注释。

如果您不希望它在所有方法之前运行,而只是在某些方法之前运行,则可以将测试重构为2个类,并在一个类中使用@Before,而不是在其他类中使用,并适当地移动方法。 / p>

另一种选择是只从您希望它们之前运行的每个测试中调用方法。

我假设您正在使用JUnit-因此请参见此处:

http://junit.sourceforge.net/javadoc/org/junit/Before.html

如果没有,请使用您正在使用的内容更新您的帖子。