并行运行器跳过测试中的循环迭代

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并行运行器跳过测试中的循环迭代相关的知识,希望对你有一定的参考价值。

我有以下测试:

@RunWith(Parameterized.class)
@SpringBootTest
@ContextConfiguration(classes = MyConfiguration.class)
public class OrderPlacementCancelTest {
    public static final int REQUESTS_PER_USER = 100;
    @Parameterized.Parameter(0)
    public String apiKey;
    @Parameterized.Parameter(1)
    public String secretKey;
    @Parameterized.Parameter(2)
    public String passPhrase;
    @Parameterized.Parameter(3)
    public String destination;
    @Parameterized.Parameter(4)
    public int index;
    @Test
    public void placeLimitAndThenCancel() throws InterruptedException, FieldNotFound, SessionNotFound, DoNotSend, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType {
        for (int i = 0; i < REQUESTS_PER_USER; i++) {
            System.out.println("ITERATION_" + i);                
        }
    }

   @Parameterized.Parameters()
   public static Collection<Object[]> data() {
       return Arrays.asList(new Object[][]{
            {"1", "1", "1", "1", 1},
            {"1", "1", "1", "1", 1},
            {"1", "1", "1", "1", 1},
            {"1", "1", "1", "1", 1},
            {"1", "1", "1", "1", 1},
        });
   }
}

我有跟随跑步者:

public class ParallelRunner {
    @Test
    public void test() {
        Class[] cls = {OrderPlacementCancelTest.class};
        JUnitCore.runClasses(new ParallelComputer(false, true), cls);
    }
}

我开始跑步,测试完成后我会查看日志。

我无法解释结果:

我看到

ITERATION_0 - 5场比赛...... ITERATION_5 - 55场比赛 ... ITERATION_9 - 55场比赛 ... ITERATION_10 - 5场比赛 ... ITERATION_50 - 5场比赛 ... ITERATION_70 - 5场比赛 ... ITERATION_98 - 5场比赛 ITERATION_99 - 5场比赛

每次迭代的预期结果100匹配。

你能解释一下这种行为以及解决方法吗?

答案

一切都好

你的结果是正确的(我认为)。

由于您并行运行ParallelComputer方法,并且您的测试是参数化的,因此生成的测试方法的数量是数组第一维中的元素数。在你的情况下,这个数字是5,这就是你看到的。

你找到55次ITERATION_5的事实是因为这个术语匹配 ITERATION_5ITERATION_50ITERATION_51,...,ITERATION_59在每场比赛的11场比赛中乘以5场比赛等于55。

您将看到所有单位数迭代数的这种效果,并且您对ITERATION_9的搜索确认了它。

尝试文本搜索ITERATION_术语以查找500个匹配项或搜索术语'ITERATION_5 '(5之后的空白区域)应该为您提供5个匹配项。

以上是关于并行运行器跳过测试中的循环迭代的主要内容,如果未能解决你的问题,请参考以下文章

当使用面向以下异常的testng并行运行自动生成的测试运行器时

WEB各类常用测试工具

如何根据当前平台跳过 xUnit 中的特定测试

XCTest 测试运行器在完成运行测试之前以代码 -1 退出

VBA - 如何有条件地跳过for循环迭代

我需要一种类似于for循环重新评估测试条件的行为的算法