Junit简介

JUnit是一个Java语言的单元测试框架,由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

Junit的特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行期

这里我们简单介绍下Junit的环境配置,使用方法,具体深入的,请私下自己深入学习。

1、环境配置

1)在Eclipse中选中工程,右键“Properties”或是在菜单Project---Properties,打开项目配置的窗口,选择到Java Build Path。
2)右边的标签选择“Libraries”,点击“Add External JARS”按钮,然后选择Junit的jar包,点击“打开”按钮即将Junit使用的jar包添加到项目配置中;具体截图如下:

配置完毕后项目截图如下:


2、简单的使用

下面是一个java源代码文件,我们要做的就是针对它使用Junit完成单元测试:
package mytest1;

public class Cal {
	private static int result;
	
	public void add(int n){
		result = result + n;
	}
	
	public void substract(int n){
		//bug:正确的应该是result=result-n;
		result = result -1;
	}
	
	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){
		//bug,这里是个死循环
		for(;;);
	}
	
	public void clear(){
		result = 0;
	}
	
	public int getResult(){
		return result;
	}
	
	
}
分析过代码后,开始针对该文件中的方法做单元测试。
1)在项目中选中Cal.java,然后右键New--Junit Test Case,新建一个Junit testcase类:

2)单元测试的类,一般都是XXXXTest.java。修改文件名后,点击“Next”,接着选择需要测试的方法等,具体如下:


3)点击OK后,生成对应的代码,但是这个代码还需要修改和完善才能做到单元测试的功能。完善后的代码如下:

具体的文件如下:
package mytest1;

import static org.junit.Assert.*;

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

public class CalTest {
	private static Cal cal = new Cal();

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

	@Test
	public void testAdd() {
		cal.add(2);
		cal.add(3);
		assertEquals(5, cal.getResult());
		//fail("Not yet implemented");
	}

	@Test
	public void testSubstract() {
		cal.add(10);
		cal.substract(2);
		assertEquals(8, cal.getResult());
		//fail("Not yet implemented");
	}

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

	@Test
	public void testDivide() {
		cal.add(8);
		cal.divide(2);
		assertEquals(4, cal.getResult());
		//fail("Not yet implemented");
	}
	
	@Test(expected = ArithmeticException.class)
	public void divideByZero(){
		cal.divide(0);
	}

}
4)执行单元测试类:右键Run As----Junit test。执行结果如下:

5)从执行结果中可以看到哪些测试成功,哪些测试失败。测试失败的,在Failure Trace窗口中可以看到测试失败的原因

3、Junit测试类中注解的含义和执行顺序

通过上面代码编写,可以看到Junit测试类中方法前面会有@Test,@Before等字符。这个是Java编程中的注解。
Junit中注解的含义如下:
@是注解   @Test
表明下面是测试方法
@Test(timeout=200)
表示下面的测试是限时测试,如果超过规定的时间,就测试失败
@Test(expected=IllegalArgumentException.class)
异常测试,验证方法能否抛出预期的错误
@Ignore
注释掉一个测试方法或一个类,被注释的方法或类,不会被执行
@BeforeClass
修饰static的方法,在整个类执行之前执行该方法一次。
@AfterClass
同样修饰static的方法,在整个类执行结束前执行一次。如释放资源
@Before
修饰public void的方法,在每个测试用例(方法)执行时都会执行
@After
修饰public void的方法,在每个测试用例执行结束后执行

接着就是JUnit中方法的执行顺序和生命周期,通过上述表格,大家可以清楚看到执行的顺序,下面简单一个例子,编写后执行就可以看到执行的效果:
package com.hotelrestsys.frame.check_out;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class DayDialogTest {
    @BeforeClass
    public static void beforeclass(){
        System.out.println("beforeclass");
    }

    @AfterClass
    public static void afterclass(){
        System.out.println("afterclass");
    }

    @Before
    public void setUp() throws Exception {
        System.out.println("before");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("after");
    }

    @Test
    public void test1() {
        System.out.println("test1");
    }

    @Test
    public void test2(){
        System.out.println("test2");
    }

}
运行结果如下:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛白南歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值