在 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)。如果这就是你要问的。