Java中Junit4测试实例

Junit简介
JUnit: JUnit是一个Java语言的单元测试框架。
单元测试:单元测试的目的不是证明你的程序是正确的,而是证明你的程序没有错误

目前流行的版本3.8和4.0
Junit3.X:需要继承于TestCase
Junit4.0:增加了annotation注解
测试方法
@Test
注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。
断言

@BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它, 而且在内存中它只会存在一份实例,它比较适合加载配置文件。
@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接。
@Before和@After会在每个测试方法的前后各执行一次。

Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示 测试点发现了问题 ,就是说程序输出的结果和我们预期的不一样。

error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。

测试用例不是用来证明你是对的,而是用来证明你没有错。

最恐怖的bug是逻辑bug.

最佳实践方式
1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void 进行修饰,不能带任何的参数
3.新建一个源代码目录来存放我们的测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
6.测试类使用Test作为类名的后缀(不是必须)
7.测试方法使用test作为方法名的前缀(不是必须)

常用注解

@Test(expected=ArithmeticException.class)
@Ignore(“提示信息”)//所修饰的测试方法会被测试运行器忽略
@Test(timeout=2000)//设置超时时间
@RunWith //可以更改测试运行器 org.junit.runner.Runner

junit4 assert类中的assert方法总结 :
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类。

1.assertTrue/False([String message,]boolean condition);
判断一个条件是true还是false。
2.fail([String message,]);
失败,可以有消息,也可以没有消息。
3.assertEquals([String message,]Object expected,Object actual);
判断是否相等,可以指定输出错误信息。
第一个参数是期望值,第二个参数是实际的值。
这个方法对各个变量有多种实现。在JDK1.5中基本一样。
但是需要主意的是float和double最后面多一个delta的值,可能是误差范围
4.assertNotNull/Null([String message,]Object obj);
判读一个对象是否非空(非空)。
5.assertSame/NotSame([String message,]Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。
7.failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。
注意信息是必须的,而且这个输出是格式化过的。

一。先编写实体类 MyCaculator.java

package com.entity;

//计算器类

public class MyCaculator {
    public int add(int x,int y)  ///加法
    {
        return x+y;
    }

    public int sub(int x,int y)  //减法
    {
        return x-y;
    }

    public int multi(int x,int y)  //乘法
    {
        return x*y;
    }

    public double div(int x,int y)  //除法
    {
        return x/y;
    }

}

二。编写测试类 TestMyCaculator.java

package com.entity;

import org.junit.Test;
import junit.framework.Assert;

public class TestMyCaculator {
    private static MyCaculator c = new MyCaculator(); // 创建对象

    // 测试加法
    @Test
    public void testAdd() {
        int result = c.add(10, 5);
        Assert.assertEquals(15, result);
    }

    // 测试减法
    @Test
    public void testSub() {
        int result = c.sub(10, 5);
        Assert.assertEquals(5, result);
    }

    // 测试乘法
    @Test
    public void testMulti() {
        int result = c.multi(10, 5);
        Assert.assertEquals(50, result);
    }

    // 测试除法
    @Test(expected = ArithmeticException.class)
    public void testDiv() {
        double result = c.div(10, 5); // 算数异常,这里抛出异常了。
        // 这个断言执行不到。
        Assert.assertEquals(3, result);// 这个断言能通过吗?
    }
}

需要导入的jar包:junit-4.10.jar

点赞