行业资讯 2025年08月6日
0 收藏 0 点赞 651 浏览 2284 个字
摘要 :

文章目录 1.JUnit4 Maven依赖项 2.JUnit参数化测试与构造函数参数 2.1.要测试的类 2.2.参数化测试 3.JUnit参数化测试与字段注入 3.1.单个字段注入 在本JUnit教程中……




  • 1.JUnit4 Maven依赖项
  • 2.JUnit参数测试与构造函数参数
    • 2.1.要测试的类
    • 2.2.参数化测试
  • 3.JUnit参数化测试与字段注入
    • 3.1.单个字段注入

    在本JUnit教程中,学习创建和执行JUnit参数化测试。参数化测试是一种正常的测试,使用不同的测试参数重复执行。它可以帮助开发人员节省时间,通过使用不同的输入类型来测试函数的健壮性和可能的函数边界。

    1.JUnit4 Maven依赖项

    下面是我们应该在测试示例代码之前添加到Maven项目的Maven依赖项。

    <!-- Junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
     
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit-dep</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    

    2.JUnit参数化测试与构造函数参数

    参数化测试利用@RunWith注释以及@Parameters注释来提供输入。

    2.1.要测试的类

    下面是我们将编写测试用例的测试类。

    public final class MathUtils 
    {
      //获取一个数的平方方法
      public static int square(final int number) {
        return number * number;
      }
    }
    

    2.2.参数化测试

    让我们为上面的数学工具类编写参数化测试。

    @RunWith(Parameterized.class)
    public class JunitTestsWithParameters {
     
      // @Parameters 注解将此方法标记为参数提供者
      @Parameters(name = \"Run #Square of : {0}^2={1}\")
      public static Iterable<Object []> data() 
      {
        return Arrays.asList(new Object[][] { { 1, 1 }, 
                          { 2, 4 }, 
                          { 3, 19 }, 
                          { 4, 16 }, 
                          { 5, 25 } });
      }
     
      //两个参数
      private final int input;
      private final int resultExpected;
     
      // 构造函数每次用一组参数进行初始化
      public JunitTestsWithParameters(final int input, final int result) 
      {
        this.input = input;
        this.resultExpected = result;
      }
     
      @Test
      public void testUserMapping() {
        //你也可以使用断言
        Assert.assertEquals(resultExpected, MathUtils.square(input));
      }
    }
    

    请注意:

    • 我们必须按照给定的方式声明参数。
    • 参数通过构造函数传递到类的变量中,以便在测试用例中使用。
    • 参数类的返回类型是“List []”,可以使用的数据类型仅限于String或原始值。

    现在查看程序输出。JUnit4参数化测试示例

    3.JUnit参数化测试与字段注入

    要将参数传递给测试,我们可以通过字段注入而不是构造函数参数来实现。在此方法中,我们声明与输入参数数量相同的字段数。一个字段对应一个参数。

    让我们使用字段注入重新测试MathUtils类。请注意,我们如何用@Parameter注释替换构造函数。

    @RunWith(Parameterized.class)
    public class JunitTestsWithFieldInjection {
     
        @Parameters(name = \"Run #Square of : {0}^2={1}\")
        public static Iterable<Object[]> data() {
            return Arrays.asList(new Object[][] { { 1, 1 }, { 2, 4 }, { 3, 9 }, { 4, 16 }, { 5, 25 } });
        }
     
        @Parameter(value = 0)
        public int input;
         
        @Parameter(value = 1)
        public int resultExpected;
     
        @Test
        public void testSquare() 
        {
            Assert.assertEquals(resultExpected, MathUtils.square(input));
        }
    }
    

    3.1.单个字段注入

    如果我们只有一个字段要注入,那么我们不需要在@Parameter注释中放置value属性。默认值始终为“value=0”。

    @RunWith(Parameterized.class)
    public class JunitTestsWithParameters {
     
        @Parameters(name = \"Argument number {0} is positive\")
        public static Iterable<Object[]> data() {
            return Arrays.asList(new Object[][] { { 0 }, { 1 }, { 2 }, { 3 }, { 4 } });
        }
     
        @Parameter
        public int input;
     
        @Test
        public void testPositiveNumber() 
        {
            Assert.assertEquals(true, input >= 0);
        }
    }
    

    在本帖中,我们学习了如何创建参数化测试并运行具有不同参数集的多个测试迭代。它有助于对带参数的方法进行测试。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9534.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号