JUnit4.x的测试运行器
JUnit为单元测试提供了默认的测试运行器,它的测试方法都是由它负责执行的
我们也可以定制自己的运行器,所有的运行器都继承自org.junit.runner.Runner
还可以使用org.junit.runer.RunWith注解 为每个测试类指定使用具体的运行器
一般情况下,默认测试运行器可以应对绝大多数的单元测试要求
当使用JUnit提供的一些高级特性,或者针对特殊需求定制JUnit测试方式时
显式的声明测试运行就必不可少了
JUnit4.x测试套件的创建步骤
① 创建一个空类作为测试套件的入口
② 使用org.junit.runner.RunWith 和org.junit.runners.Suite.SuiteClasses注解 修饰该空类
③ 将org.junit.runners.Suite 作为参数传入RunWith注解,即使用套件运行器执行此类
④ 将需要放入此测试套件的测试类组成数组,作为SuiteClasses注解的参数
⑤ 保证这个空类使用public 修饰,而且存在公开的不带有任何参数的构造函数
下面是JUnit4.x中创建测试套件类的示例代码下面是JUnit3.8中创建测试套件类的示例代码
JUnit4.X的参数化测试
为保证单元测试的严谨性,通常会模拟不同的测试数据来测试方法的处理能力
为此我们需要编写大量的单元测试的方法,可是这些测试方法都是大同小异的
它们的代码结构都是相同的,不同的仅仅是测试数据和期望值
这时可以使用JUnit4的参数化测试,提取测试方法中相同代码 ,提高代码重用度
而JUnit3.8对于此类问题,并没有很好的解决方法,JUnit4.x弥补了JUnit3.8的不足
参数化测试的要点
① 准备使用参数化测试的测试类必须由org.junit.runners.Parameterized 运行器修饰
② 准备数据。数据的准备需要在一个方法中进行,该方法需要满足的要求如下
1) 该方法必须由org.junit.runners.Parameterized.Parameters注解 修饰
2) 该方法必须为返回值是java.util.Collection 类型的publicstatic方法
3) 该方法没有参数 ,方法名可随意 。并且该方法是在该类实例化之前执行的
③ 为测试类声明几个变量 ,分别用于存放期望值和测试所用的数据
④ 为测试类声明一个带有参数的公共构造函数 ,并在其中为③ 中声明的变量赋值
⑤ 编写测试方法,使用定义的变量作为参数进行测试
参数化测试的缺点
一般来说,在一个类里面只执行一个测试方法。因为所准备的数据是无法共用的
这就要求,所要测试的方法是大数据量的方法,所以才有必要写一个参数化测试
而在实际开发中,参数化测试用到的并不是特别多
下面是JUnit4.x中参数化测试的示例代码
首先是Calculator.java
然后是JUnit4.x的参数化测试类ParameterTest.java
分享到:
相关推荐
参数化测试允许为同一个测试方法提供多组输入数据,而`Suite`则能将多个测试类组合成一个测试套件。 总之,在Eclipse中使用JUnit4进行单元测试,能够高效地确保代码质量,提高软件的可靠性和可维护性。通过熟练掌握...
5. **参数化测试**:`@Parameterized`测试可以使用不同的参数多次运行同一个测试方法,这对于测试多种输入情况非常有用。 6. **超时测试**:`@Test(timeout = 1000)`可以设置测试方法的执行时间限制,超过设定时间...
JUnit 4.12引入了一些关键特性,如注解驱动的测试、测试规则(Test Rules)、参数化测试和假设(Assumptions)。注解驱动使得测试代码更加简洁易读,而测试规则允许更精细地控制测试执行的环境和行为。参数化测试让...
在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock** PowerMock是一个扩展了其他Mocking框架(如EasyMock和Mockito)的库,它允许开发者对静态方法...
JUnit测试通常会集成到持续集成工具(如Jenkins、Travis CI)中,自动化构建和测试流程。 在给定的文件"dwr+Extjs.txt"中,虽然文件名没有直接关联到JUnit,但可能涉及DWRExtJS的整合测试。DW(R)是Direct Web ...
在实际应用中,`JAVA-JUnit5-master`这个压缩包可能包含了示例项目,展示如何在实际代码中使用JUnit5进行单元测试和测试套件的编写。你可以找到包含`.java`源文件和`.test`测试文件的目录,查看其中的代码结构和用法...
JUnit还支持异常测试、参数化测试、定时测试等高级功能,极大地简化了单元测试的编写和维护工作。 接下来,我们要讨论的是Ant。Ant是Apache项目的一个组件,它是一个基于XML的构建工具,用于管理Java项目的构建过程...
除了基本的断言,JUnit还提供了更高级的功能,如参数化测试。通过`@Parameterized`注解,我们可以创建一个参数化的测试类,为同一测试逻辑提供不同的输入数据,从而实现多组测试。此外,`@Category`注解可以对测试...
6. **参数化测试**:如何使用参数化测试,通过不同的输入数据运行同一测试方法,以覆盖更多测试场景。 7. **测试套件和分类**:如何组织多个测试类,并使用`@RunWith(Suite.class)`和`@Suite.SuiteClasses`进行批量...
Junit4是其一个重要的版本,引入了许多新特性,如注解(Annotations)、测试套件(Test Suites)以及参数化测试等。 **二、Junit4的核心概念** 1. **注解(Annotations)**:Junit4使用注解简化了测试的声明。例如...
2. **参数化测试**:允许用不同的参数运行同一测试方法,这样可以测试多种情况,比如遍历各种输入值,确保方法在所有情况下都能正确处理。 3. **异常测试**:使用@Test注解的可选属性expected,可以指定方法应该抛...
此外,JUnit还提供了更高级的功能,如参数化测试(Parameterized Tests),允许使用不同的输入数据运行同一个测试方法;异常测试(Exception Testing),可以通过`@Test(expected = Exception.class)`来检查代码是否...
在Junit 4中,可以通过`@RunWith(Suite.class)`和`@Suite.SuiteClasses`注解来定义测试套件。而在Junit 5中,可以使用`@ExtendWith(JUnitPlatform.class)`和`@SelectClasses`。 除了基础功能外,Junit还支持参数化...
1. **测试类和测试方法**:在JUnit中,我们创建包含测试方法的测试类。测试方法通常以`test`开头,使用`@Test`注解标记,表示这个方法将被执行作为测试的一部分。测试方法应该具有明确的预期结果,并通过断言...
JUnit是Java编程语言中最...随着JUnit4和JUnit5的出现,更多的高级特性,如参数化测试、异步测试、规则等,使得单元测试更加灵活和强大。不过,了解JUnit3的基本概念和实践对于理解后续版本的演变和使用是至关重要的。
首先,JUnit4引入了注解(Annotation)机制,这使得测试类和测试方法的声明变得更加简洁。例如,`@Test`注解用于标记测试方法,`@Before`和`@After`用于定义在每个测试方法之前和之后执行的设置和清理代码。此外,...
首先,JUnit的核心概念是测试类和测试方法。一个测试类通常对应于被测试的业务逻辑类,而测试方法则是对业务逻辑类中的各个方法进行验证的函数。在JUnit中,测试方法通常以`test`开头,并且是公共的、无参数的、没有...
标题中的“对基于Junit的测试代码自动化生成的研究”表明,这个主题主要关注的是如何利用Junit这个单元测试框架来实现测试代码的自动化生成。Junit是Java编程语言中最常用的测试框架之一,它使得开发者能够方便地...
8. **参数化测试**:Junit 4引入了参数化测试,允许你为同一个测试方法提供多组输入数据,测试方法将为每组数据执行一次。 9. **假对象和模拟**:在单元测试中,有时需要隔离被测试的代码,避免与外部系统的交互。...