一、一个简单的测试
编写一个只有一种运算的计算器:
public class Calculator { public static double divide(int dividend, int divisor) { return dividend / divisor; } }
为这个方法编写测试:
public class CalculatorTest { //允许误差 private static final double DELTA = 0.01; @Test public void testAdd() throws Exception { assertEquals(3, Calculator.divide(9, 3), DELTA); } }
这个测试中使用9除以3测试了方法,但是我们希望使用多组数据进行测试,并且不需要编写多个方法,这时候可以使用JUnit的参数化测试。
二、参数化测试
在JUnit中,参数化测试有两种形式,第一种形式是构造函数形式,即JUnit遍历所提供的所有参数调用构造函数并执行测试方法:
//使用Parameterized Runner执行参数化测试 @RunWith(Parameterized.class) public class CalculatorTest { //允许误差 private static final double DELTA = 0.01; private int dividend; private int divisor; private int result; public CalculatorTest(int dividend, int divisor, int result) { this.dividend = dividend; this.divisor = divisor; this.result = result; } // 用@Parameterized.Parameters注解标注该方法是返回所有参数,被注解的方法必须返 // 回装载数组的Iterable对象,同时必须为public,static,当测试执行时,系统会遍历 // 每组参数(数组)调用构造函数并执行测试。 @Parameterized.Parameters public static Iterable<Object[]> getParameters() { return Arrays.asList(new Object[][]{ {9, 3, 3}, {5, 1, 5}, {12, 4, 3} }); } //当执行测试后,该方法会运行3次 @Test public void testDevide throws Exception { assertEquals(result, Calculator.divide(dividend, divisor), DELTA); } }
第二种是变量注入形式,变量的值不通过构造函数初始化,而是通过JUnit注入:
//使用Parameterized Runner执行参数化测试 @RunWith(Parameterized.class) public class CalculatorTest { //允许误差 private static final double DELTA = 0.01; //使用@Parameter标注public变量,JUnit会遍历每组参数进行注入 //注解中的整数参数表示注入参数组中的第几个参数 @Parameter(0) public int dividend; @Parameter(1) public int divisor; @Parameter(2) public int result; // 用@Parameterized.Parameters注解标注该方法是返回所有参数,被注解的方法必须返 // 回装载数组的Iterable对象,同时必须为public,static,当测试执行时,系统会遍历 // 每组参数(数组)调用构造函数并执行测试。 @Parameterized.Parameters public static Iterable<Object[]> getParameters() { return Arrays.asList(new Object[][]{ {9, 3, 3}, {5, 1, 5}, {12, 4, 3} }); } //当执行测试后,该方法会运行3次 @Test public void testDivide() throws Exception { assertEquals(result, Calculator.divide(dividend, divisor), DELTA); } }
相关推荐
4. **为测试类声明一个使用注解** `org.junit.runners.Parameterized.Parameters` **修饰的,返回值为** `java.util.Collection` **的公共静态方法**,并在该方法中初始化所有需要测试的参数对。 5. **编写测试方法*...
4. **Service测试类**:使用Junit参数化测试验证Service类的各个方法。 在Service测试类中,你可能会看到类似如上的参数化测试结构,测试数据可能是从数据库查询的结果、固定的数组或文件读取的数据。每个测试用例...
@RunWith:这个元数据允许我们指定一个测试运行器(Runner),可以自定义测试执行的方式,例如参数化测试、分类测试等。@FixMethodOrder:用于控制测试方法的执行顺序,可以指定按照字母顺序或者其他方式执行测试。@...
### JUnit4学习笔记——入门篇 #### 一、配置MyEclipse在项目中引入JUnit4.jar包 在使用JUnit4进行单元测试之前,首先需要确保开发环境已正确配置JUnit库。对于使用MyEclipse IDE的开发者来说,可以通过以下步骤...
JUnit4源码的完整版本包含了整个框架的实现细节,对于理解其工作原理、学习测试驱动开发(TDD)以及进行自定义扩展非常有帮助。 1. **JUnit核心概念**: - **Test Case**:在JUnit4中,测试用例是通过继承`org....
### JUnit4 学习知识点详解 #### 一、JUnit4 概述 JUnit4 是 JUnit 测试框架的一个重大更新版本,它充分利用了 Java 5 的注解(Annotation)特性来简化测试用例的编写过程。注解是一种元数据,用于描述程序中的...
赠送jar包:junit-platform-launcher-1.8.0-M1.jar; 赠送原API文档:junit-platform-launcher-1.8.0-M1-javadoc.jar; 赠送源代码:junit-platform-launcher-1.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-...
JUnit4引入了注解驱动的测试,比如`@Before`和`@After`,分别在每个测试方法执行前和执行后运行,通常用于初始化和清理资源。此外,`@BeforeClass`和`@AfterClass`则只在类级别的开始和结束时执行一次。 对于更复杂...
2. 创建测试类和方法:创建一个新的Java类,添加`@RunWith(JUnit4.class)`注解,然后在类中编写测试方法,每个方法都添加`@Test`注解。 3. 运行测试:在IDE中选择测试类或单个测试方法右键运行,查看测试结果,绿色...
JUnit4测试框架是Java开发中广泛使用的单元测试工具,它为开发者提供了编写和运行可重复、可靠的测试用例的能力。这个“junit4测试jar包”包含了一切你需要在项目中集成JUnit4进行测试的库文件。只需将其复制到你的...
JUnit参数化测试是一种高效的方法,尤其适用于需要对多种输入数据进行相同逻辑验证的场景。它允许测试用例根据预定义的数据集动态生成,这样就可以在单个测试方法中执行多次,而无需为每组输入创建单独的测试方法。...
5. 运行器(Runner):JUnit 4.0支持自定义运行器,如`BlockJUnit4ClassRunner`是默认的运行器,还有`Parameterized`用于参数化测试,`Suite`用于测试套件。 三、实战应用 1. 创建测试类:创建一个名为`MyTest`的...
本文主要介绍了如何使用JUnit 4提供的各种功能开展有效的单元测试,并通过一个实例演示了如何使用Ant执行自动化的单元测试。下面是从中生成的相关知识点: 1. JUnit 4简介:JUnit是Java社区中知名度最高的单元测试...
junit4单元测试报错:method initializationerror not found 缺少jar包导致,总共需要三个jar包:junit-4.11.jar,hamcrest-core-1.3.rc2.jar,hamcrest-library-1.3.rc2.jar,都在压缩包里了。
4. **参数化测试**:JUnit 4引入了参数化测试,允许用不同的参数多次运行同一个测试。 5. **分类测试(Category)**:JUnit 4.9开始支持分类测试,可以将测试分组,便于管理和运行特定类型的测试。 6. **测试规则...
JUnit是Java编程语言中最常用的单元测试框架之一,它为开发者提供了编写和运行可重复的、自动化的测试用例的能力。这个“junit-libs”压缩包文件很显然是一个包含JUnit库及相关依赖的集合,用于支持Java项目的测试...
JUnit4相较于早期版本引入了许多改进,如注解、参数化测试和测试套件等,使得测试代码更加简洁和灵活。 2. 注解(Annotations): JUnit4的核心特点是广泛使用注解,这使得测试类和方法的声明更清晰。例如: - `@...
- **注解(Annotation)**:JUnit4引入了注解,如@Test、@Before、@After、@BeforeClass、@AfterClass,简化了测试代码的编写。 - **分类(Category)**:允许将测试分为不同的类别,便于管理和执行。 - **参数化...
### JUnit4学习方法 #### 一、简介与背景 JUnit4是一款广泛应用于Java开发环境下的单元测试框架,它提供了一套...同时,也可以研究更多JUnit4提供的高级特性,如参数化测试、异常测试等,以满足更复杂的测试需求。
JUnit4的`@Parameters`注解和`Parameterized`测试类可以实现参数化的测试,即用不同的输入数据多次运行同一个测试。 ```java @RunWith(Parameterized.class) public class ParameterizedTest { @Parameters ...