junit学习笔记(一):JUnit的安装和测试原则 (一)

2014-11-24 00:56:20 · 作者: · 浏览: 7

这里以一个加减乘除的类为例子。


最终工程如下:

\


1、导入junit的jar,不建议直接使用eclipse 中提供的包
junit的jar包下载:点击打开链接 最新版本的是4.11
这里注意一个问题:如果是用4.11版本的话,同时还要下载hamcrest 1.3,下载地址->点击打开链接,使用时,要同时导入这两个包才可以!!
如果是之前版本的,只需要导入一个junit的jar包就可以了


2、在src目录下编写服务代码,这里是一个只有加减乘除功能的类
[cpp] package com.fjnu.util;

public class Calculate {
public int add(int a, int b){
return a+b;
}
public int minus(int a, int b){
return a-b;
}
public int divide(int a,int b){
return a/b;
}
public int multi(int a, int b){
return a*b;
}
}

package com.fjnu.util;

public class Calculate {
public int add(int a, int b){
return a+b;
}
public int minus(int a, int b){
return a-b;
}
public int divide(int a,int b){
return a/b;
}
public int multi(int a, int b){
return a*b;
}
}


3、创建测试类
基本原则:1、在eclipse中创建一个source folder命名为test
2、创建一个测试类所在的包,包的名称和要测试的类一致

\

[cpp] package com.fjnu.util;

import org.junit.Before;
import org.junit.Test;
// 静态导入
import static org.junit.Assert.*;

public class TestCalculate {
private Calculate cal;

// 执行任意一个方法之前都会执行setUp方法
@Before
public void setUp(){
cal = new Calculate();
}

// 加了@Test表示该方法是一个单元测试
@Test
public void testAdd(){
/*
* 以下是一个简单的断言的编写
* 第一个参数是如果出错给出的提示信息
* 第二个表示期望值,通常是用户指定的内容
* 第三个表示代码返回的实际值
*/
// Assert.assertEquals("加法有问题", 34, cal.add(12,22));
/*
* 由于包进行了静态导入之后
* Assert中的所有静态方法就不用再添加类名了
* 这样可以有效地兼容junit3
*/
assertEquals("加法有问题", 34, cal.add(12,22));
}
@Test
public void testMinus(){
int res = cal.minus(12, 2);
// Assert.assertEquals("减法有问题", 10, res);
assertEquals("减法有问题", 10, res);
}
// 表示这个测试类应该抛出ArithmeticException,如果不抛出就报错
@Test(expected=ArithmeticException.class)
public void testDivide(){
int res = cal.divide(12, 0);
assertEquals("除法有问题", 6, res);
}

// 时间单位为ms
@Test(timeout=190)
public void testTime() throws InterruptedException{
Thread.sleep(209);
int rel = cal.divide(12, 2);
}

@Test
public void testMulti(){
int res = cal.multi(12, 2);
assertEquals("乘法有问题",24,res);
}
//hamcrest 1.3
}

package com.fjnu.util;

import org.junit.Before;
import org.junit.Test;
// 静态导入
import static org.junit.Assert.*;

public class TestCalculate {
private Calculate cal;

// 执行任意一个方法之前都会执行setUp方法
@Before
public void setUp(){
cal = new Calculate();
}

// 加了@Test表示该方法是一个单元测试
@Test
public void testAdd(){
/*
* 以下是一个简单的断言的编写
* 第一个参数是如果出错给出的提示信息
* 第二个表示期望值,通常是用户指定的内容
* 第三个表示代码返回的实际值
*/
// Assert.assertEquals("加法有问题", 34, cal.add(12,22));
/*
* 由于包进行了静态导入之后
* Assert中的所有静态方法就不用再添加类名了
* 这样可以有效地兼容junit3
*/
assertEquals("加法有问题", 34, cal.add(12,22));
}
@Test
public void testMinus(){
int res = cal.minus(12, 2);
// Assert.assertEquals("减法有问题", 10, res);
assertEquals("减法有问题", 10, res);
}
// 表示这个测试类应该抛出ArithmeticException,如果不抛出就报错
@Test(expected=ArithmeticException.class)
public void testDivide(){
int res = cal.divide(12, 0);
assertEquals("除法有问题", 6, res);
}

// 时间单位为ms
@Test(timeout=190)
public void testTime() throws Interrupt