【问题标题】:invoking a test method each time before other test methods每次在其他测试方法之前调用一个测试方法
【发布时间】:2020-02-17 13:07:34
【问题描述】:

我有一个测试方法如下,另外两个测试方法依赖于这个方法,这个方法每次都应该在这两个之前运行,而不是两个都只运行一次。

 @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,因为它已经是一个测试并且有它自己的提供者。

【问题讨论】:

  • 只需编写一个方法,并在这些测试开始时添加对它的调用
  • 我想首先为这个问题寻找一个标准的方法,因为我想要一个数据提供者并且用简单的方法我不能那样但是谢谢。
  • 这能回答你的问题吗? stackoverflow.com/questions/20295578/…
  • 不,这些注释不采用数据提供者,也不能作为单独的测试方法工作,因此无济于事。谢谢

标签: java unit-testing testng


【解决方案1】:

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

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

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

我假设您使用的是 JUnit - 所以请看这里:

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

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

【讨论】:

  • 正如我所提到的,我希望为第一个测试提供一个数据提供程序并将其作为测试运行,但我无法使用 @Before 提供数据提供程序,也无法将其作为单独的测试运行。我有junit和testng。谢谢
猜你喜欢
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多