junit 单元测试 - 参数化测试

junit4.x版本需要引入如下jar包:

hamcrest-core-1.3.jar

junit-4.12-beta-3.jar

新建一个计算器类,如下:

package com.pt;

public class Calculate {
    /**
     * 加法
     * @param d1
     * @param d2
     * @return
     */
    public static double add(double d1,double d2){
        return d1 + d2;
    }

    /**
     * 减法
     * @param d1
     * @param d2
     * @return
     */
    public static double diff(double d1,double d2){
        return d1 - d2;
    }

    /**
     * 乘法
     * @param d1
     * @param d2
     * @return
     */
    public static double muti(double d1,double d2){
        return d1 * d2;
    }

    /**
     * 除法
     * @param d1
     * @param d2
     * @return
     */
    public static double devide(double d1,double d2){
        return d1 / d2;
    }
}

Calculate.java

新建一个Source Folder文件夹(注意:不是folder文件夹)

新建一个JUnit Test Case 类(注意:不是他普通的类)

 1 package com.pt;
 2
 3
 4 import java.util.Arrays;
 5 import java.util.Collection;
 6
 7 import org.junit.After;
 8 import org.junit.Before;
 9 import org.junit.Test;
10 import org.junit.runner.RunWith;
11 import org.junit.runners.Parameterized;
12 import org.junit.runners.Parameterized.Parameters;
13
14 @RunWith(Parameterized.class)    //指定Runner 参数化测试的时候需要此注解
15 public class TestCalculate {
16     private long input1;
17     private long input2;
18
19
20     /**
21      * 构造函数
22      * @param in_1
23      * @param in_2
24      */
25     public TestCalculate(long in_1, long in_2){
26         this.input1 = in_1;
27         this.input2 = in_2;
28     }
29
30     @Before            //每个测试函数执行前 都执行 setUp不可以是static
31     //@BeforeClass    //测试前只执行一次 setUp必须是static
32     public void setUp(){
33         System.out.println("开始测试之前~~~~~~~~~");
34     }
35
36     @After            //每个测试函数执行后 都执行 tearDown不可以是static
37     //@AfterClass        //测试结束后只执行一次  tearDown必须是static
38     public void tearDown(){
39         System.out.println("开始完成之后~~~~~~~~~");
40     }
41
42     //参数化测试 测试数据
43     @Parameters
44     public static Collection preData(){
45         //必须定义成 定义成long就会报错,在执行构造函数的时候
46         Object[][] data = new Object[][]{{1,2},{2,3},{4,5}};
47         return Arrays.asList(data);        //将数组转化成集合
48     }
49
50
51     @Test
52     public void testAdd(){
53         double result_add = Calculate.add(input1, input2);
54         System.out.println("addesult: " + result_add);
55         //断言  如果与期望值3 不一样,就会包异常
56         //Assert.assertEquals("加法计算错误", (long)3, (long)result_add);
57         System.out.println("测试add方法:" + input1 + " + " + input2 + " = " + result_add);
58     }
59
60     @Test
61     public void testDiff(){
62         Calculate.diff(1, 2);
63         System.out.println("测试diff方法");
64     }
65
66     @Test
67     public void testMuti(){
68         Calculate.diff(1, 2);
69         System.out.println("测试muti方法");
70     }
71
72     //如果运行时间超过300ms就会报异常
73     @Test(timeout=300)
74     public void testDevide(){
75         try{
76             Thread.sleep(298);
77         }catch(Exception ex){
78
79         }
80         Calculate.diff(1, 2);
81         System.out.println("测试devide方法");
82     }
83 }

TestCalculate.java

OK;

右键 -> Run As ->JUnit Test

时间: 2024-10-11 00:49:57

junit 单元测试 - 参数化测试的相关文章

JUnit之参数化测试和成组测试的使用

JUnit之参数化测试和成组测试的简单使用 参数化测试 正如数组替代int a0,a1,a2一样,测试加法时assertEquals(3.0, h.add(1, 2), 0.1);相当于声明一个变量,要测试100个怎么办. 所以,有了参数化测试,使用一个Collection收集所有的数据--加法时每一次测试需要的几个数据构成一组,n个组构成Collection. 然后按照JUnit的用法要求,写出单元测试类.(偷懒一下,不想写被测试的业务类X了.下面的例子中假设要测试的方法是,判断一个数是否奇数

spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

1. 目的: junit 单元测试,Cobertura   测试覆盖率报告 项目目录结构 2. maven 配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mave

springboot利用mock进行junit单元测试,测试controller

1  spring-boot-starter-test内置mockito,添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2 示例controller packag

Junit 4 Tutorials(Junit 4 教程) 四、Junit4 参数化测试

Junit 4 参数化测试 允许通过变化范围的参数值来测试方法.参数擦测试可以通过以下简单的步骤实现: 对测试类添加注解 @RunWith(Parameterized.class) 将需要使用变化范围参数值测试的参数定义为私有变量 使用上一步骤声明的私有变量作为入参,创建构造函数 .创建一个使用@Parameters注解的公共静态方法,它将需要测试的各种变量值通过集合的形式返回. 使用定义的私有变量定义测试方法 Junit 4 参数化测试样例 EvenNumberChecker.java 校验输

JUnit4学习笔记(二):参数化测试与假定(Assumption)

一.一个简单的测试 编写一个只有一种运算的计算器: 1 public class Calculator { 2 public static double divide(int dividend, int divisor) { 3 return dividend / divisor; 4 } 5 } 为这个方法编写测试: 1 public class CalculatorTest { 2 //允许误差 3 private static final double DELTA = 0.01; 4 5

Junit单元测试、反射、注解

Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用:白盒测试 * 步骤: 1. 定义一个测试类(测试用例) * 建议: * 测试类名:被测试的类名Test CalculatorTest * 包名:xxx.xxx.xx.test cn.itcast.test 2. 定义测试方法:可以独立运行 * 建议: * 方法名:test测试的方法名 testAdd() * 返回值

JUnit实战(1) - JUnit起步(Parameterized参数化测试)

创建Java Project项目,项目名称:ch01-jumpstart Calculator.java public class Calculator { public double add(double number1, double number2) { return number1 + number2; } } CalculatorTest.java import static org.junit.Assert.*; import junit.framework.Assert; impo

junit参数化测试的使用方法

JUnit参数化测试的五个步骤:(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized.(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据.(3)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值.(4)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方

(转)Spring Boot Junit单元测试

场景:在项目开发中要测试springboot工程中一个几个dao和service的功能是否正常,初期是在web工程中进行要素的录入,工作量太大.使用该单元测试大大减小了工作强度. Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性.凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. 刚好前段时间写了一些关于SpringBoot的帖子,正好现在把Junit再拿出来从几个方面再说一下,也算是给一些新手参考