Junit学习笔记之一:junit的安装和测试原则

时间:2020-12-22 05:11:18

1、导入junit的jar,不建议直接使用eclipse中所提供的包

2、在src目录下编写服务代码

3、创建测试类

   基本原则:1、在eclipse中创建一个sourcefolder命名为test

   2、创建一个测试类所在的包,包的名称和要测试的类一致

4、Junit3和Junit4两者之间的区别是非常明显的

在Junit3中,如果某个类需要是测试类,必须将其继承于TestCase,如果某个方法需要是测试方法,必须让这个方法通过testXX开头,在junit3中,如果希望指定某个测试方法运行之前运行某个初始化方法,这个方法的名称必须是setUp,如果希望在某个测试方法运行之后运行某个释放资源的方法,这个方法的名称必须是tearDown

  在Junit4中,一个POJO类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before,释放资源的方法通过@After来标注。但是为了让junit4中的测试类在Junit3中也可以使用,习惯于把初始化方法命名为setUp,释放资源的方法命名为tearDown,测试方法也同样以test开头

5、如何使用断言

   在junit4中提供了一个Assert的类,这个类中有大量的方法进行断言的处理,在junit3中由于继承了TestCase,这个TestCase中提供了大量的assert的方法

//把Assert中的static方法全部导入到类中
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

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

public class TestCalcuate {
Calcuate cal;

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

//加了@Test表示该方法是一个单元测试方法
@Test
public void testAdd() {
int rel = cal.add(12,22);
/*
* 以下就是一个简单的断言的编写
* 第一个参数是如果出错给出的提示信息
* 第二个参数表示方法执行完成之后预期的一个值
* 第三个参数表示实际值
*/
//Assert.assertEquals("加法有问题", rel, 34);
/**
* 当进行了静态导入之后,import static org.junit.Assert.*;
* Assert中的所有静态方法就不用在添加类名来调用
* 这样可以有效的兼容junit3
*/
assertEquals("加法有问题", rel, 34);
}

@Test
public void testMinus() {
int rel = cal.minus(20, 10);
assertEquals("减法有问题",rel,10);
}

@Test
public void testDivide() {
int rel = cal.divide(20, 10);
assertEquals(rel,2);
}

//表示这个测试类应该抛出ArithmeticException,如果不抛出就报错
@Test(expected=ArithmeticException.class)
public void testDivideException() {
int rel = cal.divide(20,0);
}

//表示这个方法应该在300毫秒内执行结束才算是正确
@Test(timeout=300)
public void testTime() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("abc");
}

@Test
public void testMul() {
int rel = cal.mul(10, 5);
assertEquals(rel, 50);
}

@Test
public void testHamcrest() {
//首先需要静态导入import static org.hamcrest.Matchers.*;
//判断50是否大于20并且小于60,具体的hamcrest的比较参数可以在文档中查询
assertThat(50,allOf(greaterThan(20),lessThan(60)));
//判断某个字符串是否以另一个字符串结尾
assertThat("abc.txt",endsWith("txt"));
}
}