在 Maven 上按顺序强制进行集成参数化测试
force sequentially on integration parametrized test on maven
我有参数化集成测试,我 运行 使用 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
注释 class InfoIT
(来自 net.jcip:jcip-annotations:1.0),这将使测试 运行顺序(来源:https://maven.apache.org/surefire/maven-failsafe-plugin/examples/fork-options-and-parallel-execution.html)。如果这就是你要问的。
我有参数化集成测试,我 运行 使用 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
注释 class InfoIT
(来自 net.jcip:jcip-annotations:1.0),这将使测试 运行顺序(来源:https://maven.apache.org/surefire/maven-failsafe-plugin/examples/fork-options-and-parallel-execution.html)。如果这就是你要问的。