JUnit 使用@Parameters进行参数化测试的示例

Junit 中的参数化测试是什么?

参数化测试是使用不同的值反复执行相同的测试。它可以帮助开发人员节省执行相同测试的时间,这些测试仅在输入和预期结果上有所不同。

使用参数化测试,可以建立从某些数据源检索数据的测试方法。

考虑一个简单的测试来对不同的数字求和。代码可能看起来像-

Junit 中的参数化测试

上述方法导致了很多冗余。

我们需要一种简单的方法。使用参数化测试,您只需添加一个方法来输入 10 个数据输入,您的测试就会自动运行 10 次。

创建参数化的步骤 JUnit 测试

以下代码显示了参数化测试的示例。它测试 Arithmetic 类的 sum() 方法:

步骤1) 创建一个类。在此示例中,我们将使用 sum (int,int) 方法输入两个数字,该方法将返回给定数字的总和

创建参数化的步骤 JUnit 测试

步骤2) 创建参数化测试类

创建参数化的步骤 JUnit 测试

代码说明

  • 代码行11: 使用@runWith(Parameterized.class)注释你的测试类。
  • 代码行13: 将变量“firstNumber”声明为私有变量并将类型声明为 int。
  • 代码行14: 将变量“secondNumber”声明为私有变量,并将类型声明为 int。
  • 代码行15: 将变量“expectedResult”声明为私有变量,并将类型声明为 int。
  • 代码行16: 将变量“airthematic”声明为私有变量,并将类型声明为 Airthematic。

@RunWith(类别名称.类别): @RunWith 注释用于指定其运行器类名。如果我们不指定任何类型作为参数,则运行时将选择 BlockJunit4ClassRunner 默认情况下。

此类负责使用新测试实例运行测试。它负责调用 JUnit 生命周期方法,例如setup(关联资源)和teardown(释放资源)。

要参数化,您需要使用 @RunWith 进行注释并传递要测试所需的 .class

步骤3) 创建一个存储测试数据的构造函数。它存储 3 个变量

创建参数化的步骤 JUnit 测试

步骤4) 创建一个生成并返回测试数据的静态方法。

创建参数化的步骤 JUnit 测试

代码行32,33: 创建一个二维数组(提供添加的输入参数)。使用 asList 方法,我们将数据转换为 List 类型。因为方法输入的返回类型是集合。

代码行30: 运用 @参数 注释来创建一组输入数据来运行我们的测试。

@Parameters 注释标识的静态方法返回一个集合,其中集合中的每个条目将作为测试一次迭代的输入数据。

考虑元素

1,2,3 {}

服务

第一个数字 =1

第二个数字=2

预期结果=3

这里每个数组元素将被传递给构造函数,由于该类被多次实例化,所以每次传递一个。

步骤5) 完整代码

创建参数化的步骤 JUnit 测试

代码说明:

  • 代码行25: 使用 @Before 注释设置资源(此处为 Airthematic.class)。此处使用 @Before 注释在每个测试用例之前运行。它包含测试的先决条件。
  • 代码行36: 使用@Test注释创建我们的测试。
  • 代码行39: 创建一个断言语句来检查我们的总和是否等于我们的预期。

步骤6) 创建测试运行器类来运行参数化测试:

创建参数化的步骤 JUnit 测试

代码说明:

  • 代码行8: 声明类测试的 main 方法,它将运行我们的 JUnit 测试。
  • 代码行9: 使用 JunitCore.runclasses 执行测试用例,它将测试类名作为参数(在我们的示例中我们使用 Airthematic.class)。
  • 代码行11: 使用for循环处理结果并打印出失败的结果。
  • 代码行13: 打印出成功的结果。

输出:

以下是显示测试成功且没有失败痕迹的输出:

创建参数化的步骤 JUnit 测试

在控制台上查看结果,显示两个数字的加法:-

JUnit 参数化测试

总结

参数化测试使开发人员能够使用不同的值一遍又一遍地执行相同的测试。

参数化过程中要使用的重要注释

  • @RunWith
  • @参数