`
eggbucket1
  • 浏览: 78388 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

JUnit中的测试套件和参数化测试

 
阅读更多

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

分享到:
评论

相关推荐

    在Eclipse中使用JUnit4进行单元测试

    参数化测试允许为同一个测试方法提供多组输入数据,而`Suite`则能将多个测试类组合成一个测试套件。 总之,在Eclipse中使用JUnit4进行单元测试,能够高效地确保代码质量,提高软件的可靠性和可维护性。通过熟练掌握...

    junit4测试jar包

    5. **参数化测试**:`@Parameterized`测试可以使用不同的参数多次运行同一个测试方法,这对于测试多种输入情况非常有用。 6. **超时测试**:`@Test(timeout = 1000)`可以设置测试方法的执行时间限制,超过设定时间...

    junit4.12测试包下载

    JUnit 4.12引入了一些关键特性,如注解驱动的测试、测试规则(Test Rules)、参数化测试和假设(Assumptions)。注解驱动使得测试代码更加简洁易读,而测试规则允许更精细地控制测试执行的环境和行为。参数化测试让...

    PowerMock+Mockito-junit测试套件1.6.3版本

    在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock** PowerMock是一个扩展了其他Mocking框架(如EasyMock和Mockito)的库,它允许开发者对静态方法...

    junit测试测试代码

    JUnit测试通常会集成到持续集成工具(如Jenkins、Travis CI)中,自动化构建和测试流程。 在给定的文件"dwr+Extjs.txt"中,虽然文件名没有直接关联到JUnit,但可能涉及DWRExtJS的整合测试。DW(R)是Direct Web ...

    JAVA-JUnit5:测试JUnit5,单元测试和测试套件测试JUnit5,单元测试和套件测试

    在实际应用中,`JAVA-JUnit5-master`这个压缩包可能包含了示例项目,展示如何在实际代码中使用JUnit5进行单元测试和测试套件的编写。你可以找到包含`.java`源文件和`.test`测试文件的目录,查看其中的代码结构和用法...

    JUnit单元测试自动构建脚本

    JUnit还支持异常测试、参数化测试、定时测试等高级功能,极大地简化了单元测试的编写和维护工作。 接下来,我们要讨论的是Ant。Ant是Apache项目的一个组件,它是一个基于XML的构建工具,用于管理Java项目的构建过程...

    JUnit单元测试技术

    除了基本的断言,JUnit还提供了更高级的功能,如参数化测试。通过`@Parameterized`注解,我们可以创建一个参数化的测试类,为同一测试逻辑提供不同的输入数据,从而实现多组测试。此外,`@Category`注解可以对测试...

    JUnit单元测试.zip

    6. **参数化测试**:如何使用参数化测试,通过不同的输入数据运行同一测试方法,以覆盖更多测试场景。 7. **测试套件和分类**:如何组织多个测试类,并使用`@RunWith(Suite.class)`和`@Suite.SuiteClasses`进行批量...

    Junit白盒测试学习文档

    Junit4是其一个重要的版本,引入了许多新特性,如注解(Annotations)、测试套件(Test Suites)以及参数化测试等。 **二、Junit4的核心概念** 1. **注解(Annotations)**:Junit4使用注解简化了测试的声明。例如...

    Java单元测试JUnit4.7

    2. **参数化测试**:允许用不同的参数运行同一测试方法,这样可以测试多种情况,比如遍历各种输入值,确保方法在所有情况下都能正确处理。 3. **异常测试**:使用@Test注解的可选属性expected,可以指定方法应该抛...

    junit测试_java_JUnit_JUnit测试_

    此外,JUnit还提供了更高级的功能,如参数化测试(Parameterized Tests),允许使用不同的输入数据运行同一个测试方法;异常测试(Exception Testing),可以通过`@Test(expected = Exception.class)`来检查代码是否...

    用Junit进行单元测试

    在Junit 4中,可以通过`@RunWith(Suite.class)`和`@Suite.SuiteClasses`注解来定义测试套件。而在Junit 5中,可以使用`@ExtendWith(JUnitPlatform.class)`和`@SelectClasses`。 除了基础功能外,Junit还支持参数化...

    Junit软件测试单元

    1. **测试类和测试方法**:在JUnit中,我们创建包含测试方法的测试类。测试方法通常以`test`开头,使用`@Test`注解标记,表示这个方法将被执行作为测试的一部分。测试方法应该具有明确的预期结果,并通过断言...

    JUnit测试代码示例

    JUnit是Java编程语言中最...随着JUnit4和JUnit5的出现,更多的高级特性,如参数化测试、异步测试、规则等,使得单元测试更加灵活和强大。不过,了解JUnit3的基本概念和实践对于理解后续版本的演变和使用是至关重要的。

    junit4测试工具

    首先,JUnit4引入了注解(Annotation)机制,这使得测试类和测试方法的声明变得更加简洁。例如,`@Test`注解用于标记测试方法,`@Before`和`@After`用于定义在每个测试方法之前和之后执行的设置和清理代码。此外,...

    junit测试案例程序

    首先,JUnit的核心概念是测试类和测试方法。一个测试类通常对应于被测试的业务逻辑类,而测试方法则是对业务逻辑类中的各个方法进行验证的函数。在JUnit中,测试方法通常以`test`开头,并且是公共的、无参数的、没有...

    对基于Junit的测试代码自动化生成的研究

    标题中的“对基于Junit的测试代码自动化生成的研究”表明,这个主题主要关注的是如何利用Junit这个单元测试框架来实现测试代码的自动化生成。Junit是Java编程语言中最常用的测试框架之一,它使得开发者能够方便地...

    免费的Junit的单元测试jar包

    8. **参数化测试**:Junit 4引入了参数化测试,允许你为同一个测试方法提供多组输入数据,测试方法将为每组数据执行一次。 9. **假对象和模拟**:在单元测试中,有时需要隔离被测试的代码,避免与外部系统的交互。...

Global site tag (gtag.js) - Google Analytics