我有一个如下的测试方法,另外两个测试方法都依赖于此方法,并且该方法应该每次都在这两个方法之前运行,而不仅要在两个方法上都运行一次。
@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,因为它已经是一个测试,并且拥有它自己的提供程序。
答案 0 :(得分:2)
在所有测试之前对要运行的方法使用@Before
注释。
如果您不希望它在所有方法之前运行,而只是在某些方法之前运行,则可以将测试重构为2个类,并在一个类中使用@Before
,而不是在其他类中使用,并适当地移动方法。 / p>
另一种选择是只从您希望它们之前运行的每个测试中调用方法。
我假设您正在使用JUnit-因此请参见此处:
http://junit.sourceforge.net/javadoc/org/junit/Before.html
如果没有,请使用您正在使用的内容更新您的帖子。