Junit4使用(并使用参数化测试)

如果是基于Eclipse使用Junit,在现在的Eclipse版本中都已经集成了Junit,可以根据自身的需求自由使用Junit3或者Junit4。在本文中主要通过测试简单算术程序(加,减,乘,除)来介绍Junit4的使用,并引入一个简单的案例进行讲解。

Step 1: 写出基本的算术代码Calculate.java

package com.ysc.main;

public class Calculate {
    public static int add(int a, int b) {
        return a + b;
    }

    public static int minus(int a, int b) {
        return a - b;
    }

    public static int divide(int a, int b) throws Exception {
        if (b == 0) {
            throw new Exception("除数不能为0");
        }
        return a / b;
    }

    public static int multiply(int a, int b) {
        return a * b;
    }
}

Step 2: 对Calculate类添加Junit4的测试单元,右键->new->JUnit Test Case,如下图

Step 3: 对添加的测试用例进行配置,命名为TestCalculate,点击Next

Step 4: 选择需要测试的函数,点击Finish,完成JUnit的基本配置

Step 5: 在经过上面的步骤之后,就可以得到配置好的测试用例

package com.ysc.main;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CalculateTest {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testAdd() {
        fail("Not yet implemented");
    }

    @Test
    public void testMinus() {
        fail("Not yet implemented");
    }

    @Test
    public void testDivide() {
        fail("Not yet implemented");
    }

    @Test
    public void testMultiply() {
        fail("Not yet implemented");
    }

}

Step 6: 现在需要做的就是添加上需要测试的数据

package com.ysc.main;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CalculateTest {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testAdd() {
        assertEquals(5, Calculate.add(1, 4));
    }

    @Test
    public void testMinus() {
        assertEquals(-1, Calculate.minus(2, 3));
    }

    @Test
    public void testDivide() throws Exception {
        assertEquals(0, Calculate.divide(1, 4));
    }

    @Test
    public void testMultiply() {
        assertEquals(4, Calculate.multiply(1, 4));
    }

}

Step 7: 开始进行测试,右键->Run as->JUnit Test

由于添加的数据都是正常运行的数据,所有用例都测试正常

Step 6: 单纯一组测试参数肯定不足以确认代码已经达到了预期标准,应该对所有输入进行等价类划分,进行参数化测试。在此例中只对add函数进行参数化测试。

  左值 右值 预期结果
case 1 1 1 2
case 2 -1 -1 -2
case 3 1 -1 0
case 4   1 -2147483648
case 5 -2147483648 -1 2147483647

修改TestCalculate,注意在类上方需要加注解 @RunWith(Parameterized.class)

package com.ysc.main;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class CalculateTest {

    @Parameters
    public static Collection data() {
        return Arrays.asList(new Object[][] {
                { 1, 1, 2 },
                { -1, -1, -2 },
                { -1, 1, 0 },
                { 2147483647, 1, -2147483647 },
                { -2147483648, -1, 2147483647 }
        });
    }

    private int leftVal;
    private int rightVal;
    private int expectedVal;

    public CalculateTest(int leftVal, int rightVal, int expectedVal) {
        super();
        this.leftVal = leftVal;
        this.rightVal = rightVal;
        this.expectedVal = expectedVal;
    }
}

所有测试用例通过测试,如下图

时间: 2024-11-07 11:36:14

Junit4使用(并使用参数化测试)的相关文章

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 单元测试 - 参数化测试

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 d

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

TestNG的参数化测试、共享线程池配置、参数默认值配置

在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库.连接池.线程池数, 使用TestNG的参数@Parameter注解进行自动化读取 使用多线程的方式运行测试代码配置: 在'<suite>'标签中配置data-provider-thread-count="20" Java代码: /** * * <p> * Title: TestngParameters * </p> * * <p> * 参考配置文件testng-para

【t1】&#183;badboy跟jmeter结合的网页参数化测试(pigeon详细说)

[163网易邮箱网页的参数化测试],在网上查找的资料中学了好久,发现对于我这种小白来说,还是不够详细,我自己思考细想了很久才慢慢有点掌握,所以把参数化的详细过程梳理一遍,帮自己记录,也帮一下小白学习. [1]第一步,肯定是先将两个软件工具下载下来,两个工具打包放在百度云了,可直接使用http://pan.baidu.com/s/1micsNt2.当然你要自己官网下载也行呵呵.jmeter解压后可直接使用,badboy压缩包解压好是BadboyInstaller-2.0.5.exe,运行该文件进行

MSTest不支持参数化测试的解决方案

之前的项目中做单元测试一直用的是NUnit,这次做新项目,负责人要求统一用MsTest,理由是MsTest是Visual Studio内置的.用就用吧,我没什么意见.不过用了两天,我就发现一个大问题:MsTest并不支持参数化测试(也有叫行测试的). 什么是参数化测试?简单的说,就是同样的逻辑,根据输入参数不同给出不同的结果.因为只是参数不同,所以并不希望把测试写多遍,但是又希望对每个参数的测试成为一个独立的测试用例.举例说,假定我有一个数学计算的方法是把数字*2,我希望证明这个方法对于正数.负

创建参数化测试

在本节中,我们将学习如何创建参数测试.为此,我们将使用前面章节中提供的一个公共方法添加整数.因此,这是要进行的测试类. 但是,一个测试类也可以被看作是一个参数化测试类?当然,但它要满足下列所有要求: 该类被注解为 @RunWith(Parameterized.class).如前一节中所说明的, @RunWith 注解让JUnit来调用其中的注释来运行测试类,代替使用内置的JUnit运行器,Parameterized 是一个在JUnit内的运行器将运行相同的测试用例组在不同的输入. 这个类有一个构