JUnit4学习

JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能

先说说他的常见注解

@Before(每个测试方法执行之前都要执行一次,比如有些数据需要重新赋值

@After(每个测试方法执行后都执行一次,比如有些数据需要重新复制

@BeforeClass(所有方法执行前执行

@AfterClass(所有方法执行后执行

@Test(timeout = xxx)看当前测试方法是否在一定时间内完成(比如看是否死循环

@Test(expected=Exception.class)测试方法中是否有抛出了这个异常

@Ignore(历史原因或者没有设置好,就先不测试这个方法,加载@Test上面,不代替@Test

下面说说使用方法

准备一个测试用的类(里面有错误的方法

package andycpp;

public class Calculator {
    private static int result; // 静态变量,用于存储运行结果

    public void add(int n) {
        result = result + n;
    }

    public void substract(int n) {
        result = result - 1; // Bug:正确的应该是result=result-n;
    }

    public void multiply(int n) {
        // 此方法尚未写好
    }

    public void divide(int n) {
        result = result / n;
    }

    public void square(int n) {
        result = n * n;
    }

    public void squareRoot(int n) {
        for (;;)
            ; // Bug:死循环
    }

    public void clear() {
        result = 0; // 将结果清零
    }

    public int getResult() {
        return result;
    }
}

导入JUnit4包

右键项目——》构建路径——》add Library——》JUnit

在相对应的java文件右键,new——》JUnit Test Case,编写各个方法

    private static Calculator calculator = new Calculator();

    @Before
    public void setUp() throws Exception {
        calculator.clear();
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test(timeout = 1000)
    public void testAdd() {
        calculator.add(2);
        calculator.add(3);
    }

    @Test
    public void testSubstract() {
        calculator.add(10);
        calculator.substract(2);
        assertEquals(8, calculator.getResult());
    }

    @Ignore("Multiply() Not yet implemented")
    @Test
    public void testMultiply() {
    }

    @Test(expected = ArithmeticException.class)
    public void testDivide() {
        calculator.add(8);
        calculator.divide(0);
        assertEquals(4, calculator.getResult());
    }

    @Test(timeout = 1000)
    public void testSquareRoot() {
        calculator.squareRoot(1);
    }

右键测试类,run as --》JUnit可以看到效果

下面说带有多个参数一起解决

0,类前面加注解@RunWith(Parameterized.class)

1,设置参数

2,@Parameters方法

3,重写构造方法

4,@Test方法

    private static Calculator calculator = new Calculator();

    private int param;
    private int result;

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Parameters
    public static Collection data() {
        return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 } });
    }

    public SquareTest(int param, int result) {
        this.param = param;
        this.result = result;
    }

    @Test
    public void testSquare() {
        calculator.square(param);
        assertEquals(result, calculator.getResult());
        System.out.println("result=" + result);
    }

效果图

我们打包想一起测试的时候,写个类包他们两个整合起来

代码内容

@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, SquareTest.class })
public class All {
}

时间: 2024-10-11 18:15:02

JUnit4学习的相关文章

Junit4学习笔记--方法的执行顺序

package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; im

JUnit4 学习笔记

以上就是JUnit4 学习笔记的全部内容了,更多内容请关注:CPP学习网_CPP大学 本文固定链接:CPP学习网_CPP大学-JUnit4 学习笔记

JUnit4学习笔记(四):利用Rule扩展JUnit

一.Rule简介 Rule是JUnit4中的新特性,它让我们可以扩展JUnit的功能,灵活地改变测试方法的行为.JUnit中用@Rule和@ClassRule两个注解来实现Rule扩展,这两个注解需要放在实现了TestRule借口的成员变量(@Rule)或者静态变量(@ClassRule)上.@Rule和@ClassRule的不同点是,@Rule是方法级别的,每个测试方法执行时都会调用被注解的Rule,而@ClassRule是类级别的,在执行一个测试类的时候只会调用一次被注解的Rule 二.JU

JUnit4学习笔记(三):assertThat语法与Matcher

一.使用JUnit的一般测试语法 org.junit.Assert类里有各种断言方法,大部分情况下我们会像下面这个例子一样编写测试: 1 public class AssertThatTest { 2 private int id = 6; 3 private boolean trueValue = true; 4 private Object nullObject = null; 5 private String msg = "Hello World"; 6 7 @Test 8 pu

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

Junit4学习(一)

一,学习Junit4,学以致用 二,熟悉编写流程 工具:Eclipse,Junit包,hamcrest.core包 1,打开Eclipse开发工具,新建工程:file->Java Project或者使用快捷键(alt+shift+N) 并起名工程名字:junit4Demo2 2,创建被测试数据的包文件:在生成的junit4Demo2工程下的src源文件夹下创建包:com.duo.util 3,新建被测试类:Calculate 4,在新建的被测试类中输入代码: 1 package com.duo.

Junit4学习与使用

学习使用JUnit4,既然使用最新版本了,就不要再考虑老版本是如何使用的了,之前有听过JUnit但一直没有使用,现在开始学习使用JUnit4! 介绍就不说了,简单的理解为"就是一个方便大家测试的插件!" 现在使用Myeclipse来实现创建Junit4(Eclipse突然挂掉了,但两者差不了多少) 既然要测试方法,首先要有方法,我使用最简单的加减乘除. Calculator.java package com.demo; public class Calculator { private

JUnit4 学习,其实基本思想还是那些,不过采用了新的注释格式的语法

看了深入探索 JUnit 4(http://www.ibm.com/developerworks/cn/education/java/j-junit4/index.html  ) 主要是讲了新的基于注释的JUnit和之前的3.x版本的Junit有何不同,如何用JUnit4来完成JUnit3.x类似的工作,以及使用JUnit4相对应JUnit3有什么优势. 看了之后就发现,其实JUnit4是一个和Junit3不兼容的版本. 其实Junit4的这种语法,感觉上就和NUnit的语法很像了,Java的注

JUnit4 学习感悟

2016-09-07 22:31:14 1.测试方法必须使用@Test进行修饰 2.测试方法必须使用public void 进行修饰,不能带任何参数 3.新建一个源代码目录来存放我们的测试代码4.测试类的包应该和被测试类保持一致5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖6.测试类使用Test作为类名的后缀(非必须)7.测试方法必须使用test作为方法名的前缀(非必须)---进行了6,7 后,可以显得很规范 测试用例用来达到想要的预期结果,但对于逻辑错误无能为力. JUn

Junit4学习笔记(一)

1.安装JDK: 2.新建文件夹命名为junit-example,下载junit-4.12.jar 和 hamcrest-core-1.3.jar 放入junit-example文件夹中: 3.新建Calculator.java. 放入junit-example文件夹中,内容如下: 1 public class Calculator { 2 public int evaluate(String expression) { 3 int sum = 0; 4 for (String summand: