美文网首页
【软件测试技术】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