我有参数化集成测试,我使用 maven-surefire-plugin 运行。
他们使用 wiremock 服务器,为每个参数发送不同的值。
当我启动所有测试时,它们并不一致,OK 和 KO 从来都不是同一个测试。如果我只重新启动失败的,越来越多的通过,直到它们都 OK。
我怀疑是并发问题。
但是我能知道问题是出在 maven 、 surfire 、 intelliji 上还是参数化的运行器上吗?
我如何强制 maven 或 intelliji 或 Parametrized 逐一、逐一运行测试方法?
代码:
@RunWith(Parameterized.class)
public class InfoIT {
@Parameterized.Parameters(name = "cache: {0}")
public static List<Object[]> getParameters() {
return asList(new Object[][]{
{"infoA"},
{"infoB"},
{"infoC"},
{"infoD"}
});
}
@Parameterized.Parameter(0)
public String cache;
@Rule
public WireMockRule siteServer = new WireMockRule(WIREMOCK_SITESERVER_CONFIGURATION);
WebTarget infoClient = ClientBuilder.newClient().target(INFO_URL);
@Test
public void test_delete_is_ok_with_private_ip() {
// when
Response response = infoClient.path(format("/private/%s/test", cache)).request().delete();
// then
assertResponseEmpty(response);
}
最佳答案
您可以使用 @NotThreadSafe
注释类 InfoIT
(来自 net.jcip:jcip-annotations:1.0),这将使测试按顺序运行(来源:https://maven.apache.org/surefire/maven-failsafe-plugin/examples/fork-options-and-parallel-execution.html ).如果这就是您要问的。
关于java - 在 Maven 上按顺序强制进行集成参数化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432309/