美文网首页
【软件测试技术】Juint参数化测试

【软件测试技术】Juint参数化测试

作者: 树里的熊 | 来源:发表于2023-03-14 14:46 被阅读0次

数据源

参数化需要提供的数据可以是各种形式,我们只需要预处理一下,将它转化为一系列列表,一个列表里的就是一次测试需要用到的数据。比如我这里采用leetcode整数拆分的例子。测试源数据是一个txt文件,一行是一次测试需要用到的数据,第一个数是需要拆分的整数,第二个是它拆分后的数的最大乘积。

1,1
2,1
3,2
4,4
5,6
....

这是我的预处理程序:

 private static Object[][] readFromTxt(String filename) {
    Object[][] in = new Object[55][2];
    BufferedReader reader;
    try {
      reader = new BufferedReader(new FileReader(filename));
      String line = reader.readLine();
      int row = 0;
      while (line != null) {
        String[] split = line.split(",");
        for (int col = 0; col < split.length; col++) {
          in[row][col] = Integer.parseInt(split[col]);
        }
        row++;
        line = reader.readLine();
      }
      reader.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return in;
  }

然后我调用预处理函数,做好测试的数据源。注意这个函数需要加@Parameterized.Parameters注解来表示是他提供数据源。它返回一个collection类型,Junit就会把返回值作为数据源。

  @Parameterized.Parameters
  public static Collection primeNumbers() {
    String path = "input/testinput.txt";
    return Arrays.asList(readFromTxt(path));
  }

测试

这就是测试函数,可以看到我们只需要写一次Assert语句就可以重复测试多次。

  @Test
  public void testPrimeNumberChecker() {
    logger.info("Parameterized Number is : " + input);
    Assert.assertEquals(expected, max.integerBreak(input));
  }

其他注解

除此之外,我再介绍几个其他的注解。@BeforeClass ,@Before ,@Test ,@After ,@AfterClass 它们的作用就是标识当前函数的执行顺序,一个JUnit4的单元测试用例执行顺序为@BeforeClass -> @Before -> @Test -> @After -> @AfterClass,@BeforeClass和@AfterClass是分别在整个测试开始前和结束后执行,@Before 和 @After 是在每一次测试前和后执行。

log 信息

相关文章

网友评论

      本文标题:【软件测试技术】Juint参数化测试

      本文链接:https://www.haomeiwen.com/subject/fnfkrdtx.html