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

来源:互联网 发布:log4j.xml 输出sql 编辑:程序博客网 时间:2024/05/22 12:17

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方法@Beforepublic void setUp() {cal = new Calcuate();}//加了@Test表示该方法是一个单元测试方法@Testpublic void testAdd() {int rel = cal.add(12,22);/* * 以下就是一个简单的断言的编写 * 第一个参数是如果出错给出的提示信息 * 第二个参数表示方法执行完成之后预期的一个值 * 第三个参数表示实际值 *///Assert.assertEquals("加法有问题", rel, 34);/** * 当进行了静态导入之后,import static org.junit.Assert.*; * Assert中的所有静态方法就不用在添加类名来调用 * 这样可以有效的兼容junit3 */assertEquals("加法有问题", rel, 34);}@Testpublic void testMinus() {int rel = cal.minus(20, 10);assertEquals("减法有问题",rel,10);}@Testpublic 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");}@Testpublic void testMul() {int rel = cal.mul(10, 5);assertEquals(rel, 50);}@Testpublic void testHamcrest() {//首先需要静态导入import static org.hamcrest.Matchers.*;//判断50是否大于20并且小于60,具体的hamcrest的比较参数可以在文档中查询assertThat(50,allOf(greaterThan(20),lessThan(60)));//判断某个字符串是否以另一个字符串结尾assertThat("abc.txt",endsWith("txt"));}}

0 0