`
longgangbai
  • 浏览: 7337979 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Feed4Junit的简单使用(五)数据来自动态约束数据

阅读更多

Feed4Junit官方地址:

http://databene.org/feed4junit.html

 

官方文档:

Generating constrained data dynamically

Feed4JUnit supports annotations defined in JSR 303, Java 7 and Benerator 0.7 for generating random data that matches constraints.

As an example see the @Pattern annotation as an example (javax.validation.constraints.Pattern):

@RunWith(Feeder.class)
public class RegexTest {

    @Test
    public void testSmoke(@Pattern(regexp = "[A-Z][a-z]{3,8}") String name) {
        System.out.println("name:" + name);
    }
    
} 

 

Annotation reference

Annotations marked bold are new in version 1.0:

Annotation Java Package Applicability
Description 
@AssertFalse javax.validation.constraints parameter Requires that a boolean parameter is false
@AssertTrue javax.validation.constraints parameter  Requires that a booöean parameter is true 
@DecimalMin javax.validation.constraints parameter  Requires that a number parameter is greater than or equals a minimum value 
@DecimalMax  javax.validation.constraints parameter  Requires that a number parameter is less than or equals a maximum value  
@Future  javax.validation.constraints parameter  Requires that a Date parameter is in the future 
@Min  javax.validation.constraints parameter  Requires that an integral number parameter is greater than or equals a minimum value 
@Max  javax.validation.constraints parameter  Requires that an integral number parameter is less than or equals a maximum value 
@NotNull  javax.validation.constraints parameter  Requires that a parameter is not null 
@Null  javax.validation.constraints parameter  Requires that a parameter is null 
@Past  javax.validation.constraints  parameter  Requires that a Date parameter is in the past 
@Pattern  javax.validation.constraints  parameter  Requires that a String parameter matches a regular expression 
@InvocationCount org.databene.benerator.anno  method  Limits the number of invocations to a test method 
@Source  org.databene.benerator.anno  method, parameter  Specifies a source file from which to read test data (e.g. CSV or Excel(TM) file) 
@Offset 
org.databene.benerator.anno method,
parameter
Makes Feed4Junit skip the first n data sets that are imported or generated 
@Distribution  org.databene.benerator.anno  parameter  Specifies a distribution to use for a number parameter 
@Granularity  org.databene.benerator.anno  parameter  Specifies the granularity of a number parameter (corresponds to Benerator's 'precision') 
@Nullquota  org.databene.benerator.anno  parameter  Specifies the quota of null values to generate for a parameter 
@Values  org.databene.benerator.anno  parameter  Specifies a comma-separated list of all supported values 
@Last  org.databene.benerator.anno  parameter 

Used for summary and cleanup functionality necessary after the last call to a test method: The last parameter of a mathod can be annotated with @Last and be made booloean. It will then receive a true value on the last invocation, otherwise false.

@Generator  org.databene.benerator.anno  method, parameter  Specifies a simple type generator for a parameter or an array generator for a complete parameter set 
@Database  org.databene.benerator.anno

class,
method

Defines a database to be used for data retrieval 
@Bean org.databene.benerator.anno class,
method
Defines a custom data generator to retrieve data from 
@Equivalence 
org.databene.benerator.anno
class,
method
 
Advises Feed4JUnit to use the EquivalenceGeneratorFactory for all related test methods. It creates relatively small numbers of mean tests using mechanisms from border value and partition testing. 
@Coverage 
org.databene.benerator.anno
class,
method
 
Advises Feed4JUnit to use the CoverageGeneratorFactory for all related test methods. It runs through all possible values and all possible combinations and produces a large number of tests.
@Stochastic org.databene.benerator.anno
class,
method
 
Advises Feed4JUnit to use the StochasticGeneratorFactory for all related test methods. It creates gentle datarandomly and provides for an unlimited number of tests.

 

 

 

Smoke Testing 

Performing smoke tests with random but valid data can strongly improve code coverage and exhibit bugs from very special data constellations. Even if you cannot simply predict each result of random data, you can check result constraints or at least check for runtime exceptions.

In FeedJUnit, you can use the @Stoachstic annotation to generate random data or the @Coverage annotation to first generate border values and then all values between. Be aware that you need to restrict the InvocationCount in many cases (unless you want to test billions of calls):

@RunWith(Feeder.class)
public class AddTest {

    @Test
    @Coverage
    @InvocationCount(100)
    public void testAdd(int param1, int param2) {
        try {
            int result = MyUtil.add(param1, param2);
        } catch (Exception e) {
            // accept application exceptions, fail on runtime exceptions
            // like NullPointerException

            
if (e instanceof RuntimeException)
                throw e;

        }  
    }

}

 

分享到:
评论

相关推荐

    feed4junit源码

    Feed4JUnit能够让编写JUnit的参数化测试变得简便,并为这些测试提供预定义或随机测试数据。它能够从业务分析人员定义好的CVS或 Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功。利用Feed4JUnit能够...

    feed4junit

    Feed4JUnit makes it easy to write parameterized tests for the JUnit framework and feed them with predefined or random test data

    基于Feed4JUnit架构的单元测试技术研究与应用.docx

    Feed4JUnit则为解决这一问题提供了创新的解决方案,它是一个基于JUnit的开源扩展,允许将测试数据存储在文件或其他数据源中,实现了数据与代码的分离,提高了测试的灵活性和可重用性。 1. Feed4JUnit架构介绍 Feed...

    Freed4junit案例

    然后,我们可以在测试方法上使用`@RunWith(Feed4JUnitRunner.class)`注解,告诉`JUnit`使用`Feed4JUnit`来执行测试。 在测试方法内部,我们可以使用`@ForAll`或`@ForEach`注解来指定对每一行数据执行的操作。`@For...

    Junit4使用方法

    JUnit4 使用方法 JUnit4 是一个流行的 Java 单元测试框架,提供了许多功能强大且灵活的测试工具。本文将详细介绍 JUnit4 的使用方法和核心概念。 JUnit4 核心概念 JUnit4 的核心概念包括测试类、测试集和测试运行...

    JUnit4使用简单教程

    eclipse上通过一个简单例子演示使用JUnit4进行测试

    Junit4教程非常详尽

    在 JUnit4 中,测试用例的编写变得非常简单。我们可以使用 @Before、@After、@Test 等 Annotation 来描述测试方法,而不需要继承自 TestCase。这种方式使得测试用例的编写变得更加灵活和简洁。 三、JUnit4 中的元...

    Junit4简单实用

    @Test:这个元数据是 JUnit 4 的核心,它用于标记测试方法。测试框架会自动识别这个注解,执行相应的方法。与 JUnit 3 中的约定(测试方法需以 "test" 开头)相比,这种方式更加灵活,且更符合面向对象编程的原则。 ...

    JUnit4JUnit4JUnit4(文档)

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的工具来编写、组织和执行单元测试。JUnit4引入了许多改进和新特性,极大地提升了测试的灵活性和效率。下面将详细介绍JUnit4的关键概念、...

    JUnit4使用.pdf

    ### JUnit4 使用详解 #### 一、JUnit简介与单元测试概念 JUnit 是一个用于 Java 程序的单元测试框架,它可以帮助开发者确保代码的质量和稳定性。单元测试是一种编程方法,通过这种方式开发者可以在开发过程中编写...

    junit4教程(《Junit4初探》)

    JUnit4是Java编程语言中广泛使用的单元测试框架,它是Java开发者进行软件质量保证的重要工具。本教程将深入浅出地介绍JUnit4的基本概念、核心特性以及如何在实际项目中应用它来编写有效的单元测试。 ## 一、JUnit4...

    在eclipse中使用junit4教程

    jUnit4 在 Eclipse 中的使用教程 jUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。 Annotation 是一种元数据,描述数据的数据。在 Java 里面可以用来和 ...

    junit4学习文档

    ### JUnit4 学习知识点详解 #### 一、JUnit4 概述 JUnit4 是 JUnit 测试框架的一个重大更新版本,它充分利用了 Java 5 的注解(Annotation)特性来简化测试用例的编写过程。注解是一种元数据,用于描述程序中的...

    junit4 jar完整包

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了一种方便、高效的方式来验证代码的正确性。这个“junit4 jar完整包”包含了所有你需要进行单元测试的类和接口,使得测试过程变得简单且易于...

    Feed4JUnit-开源

    2. **创建测试注解**:在JUnit测试类或测试方法上,使用Feed4JUnit提供的注解(如`@RunWith(Feed4junit.class)`和`@DataFile`)来指定数据文件和如何解析数据。 3. **数据绑定**:通过注解指定如何将文件中的数据...

    junit4 jar包

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了编写可重复执行、易于维护的测试代码的能力。这个“junit4 jar包”包含了运行JUnit4测试所必需的库文件,主要包括两个核心组件:`junit-4.11....

    eclipse中使用junit4

    据您提供的信息,这篇教程将介绍如何在Eclipse中使用JUnit4进行单体测试。JUnit4是JUnit框架的一个重大改进,特别是在Java5引入注解功能之后。注解(Annotation)在Java中是一种元数据,用于提供额外的信息来描述类...

    Junit4使用教程详解+源码下载.rar

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的工具来编写可重复执行、可验证的测试代码。本教程将深入讲解JUnit4的使用方法,并附带源码供学习者实践和参考。 一、JUnit4概述 JUnit...

Global site tag (gtag.js) - Google Analytics