Java学习之Junit

之前在学习软件测试的时候,接触过Cunit,今天学习Java的时候发现Java也有单元测试框架–Junit。
我们在编写程序的时候,需要写很多方法或函数,我们同时应该确保每一个函数都完全正确。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。
传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以程序员们编写单元测试的热情不是很高。
eclipse上自带Junit4和Junit5,一般我们使用Junit4;
1.Junit4注解
@Test :该注释表示,用其附着的公共void方法(即用public修饰的void类型的方法 )可以作为一个测试用例;
@Before :该注释表示,用其附着的方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件;
@BeforeClass :该注释表示,用其附着的静态方法必须执行一次并在类的所有测试之前,发生这种情况时一般是测试计算共享配置方法,如连接到数据库;
@After :该注释表示,用其附着的方法在执行每项测试后执行,如执行每一个测试后重置某些变量,删除临时变量等;
@AfterClass :该注释表示,当需要执行所有的测试在JUnit测试用例类后执行,AfterClass注解可以使用以清理建立方法,如断开数据库连接,注意:附有此批注(类似于BeforeClass)的方法必须定义为静态;
@Ignore :该注释表示,当想暂时禁用特定的测试执行可以使用忽略注释,每个被注解为@Ignore的方法将不被执行。
2 .Juint4断言
断言是一些方法,所有这些方法都来自 org.junit.Assert 类,用来检测bug。
简而言之,我们就是通过断言方法来判断实际结果与我们预期的结果是否相同,如果相同,则测试成功,反之,则测试失败。
 assertEquals
void assertEquals([String message], expected value, actual value)
断言两个值相等,值的类型可以为int、short、long、byte、char 或者java.lang.Object,
其中第一个参数是一个可选的字符串消息;
 assertTrue
void assertTrue([String message], boolean condition) :
断言一个条件为真;
 assertFalse
void assertFalse([String message],boolean condition) :
断言一个条件为假;
 assertNotNull
void assertNotNull([String message], java.lang.Object object) :
断言一个对象不为空(null);
 assertNull
void assertNull([String message], java.lang.Object object) :
断言一个对象为空(null);
 assertSame
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) :
断言两个对象引用相同的对象;
 assertNotSame
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) :
断言两个对象不是引用同一个对象;
 assertArrayEquals
void assertArrayEquals([String message], expectedArray, resultArray) :
断言预期数组和结果数组相等,数组的类型可以为int、long、short、char、byte 或者 java.lang.Object
3 .JUnit 4.X和JUnit 3.X的区别
 JUnit 3.X
(1)使用 JUnit 3.X 版本进行单元测试时,测试类必须要继承于 TestCase 父类;
(2)测试方法需要遵循的原则:
public的; void的;无方法参数;方法名称必须以 test 开头;
 JUnit 4.X
(1)使用 JUnit 4.X 版本进行单元测试时,不用测试类继承TestCase父类;
(2)JUnit 4.X 版本,引用了注解的方式进行单元测试;

演示:

package cn.njit.jUnit;

public class MyMath {
	public int add(int a,int b,int c) {
		return a+b+c;
	}
}
---------------------------------------------------------------------------------
package cn.njit.jUnit;

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

public class TestAll {
	@Before
	public void before() {
		System.out.println("Before test");
	}
	@Test
	public void test1() {
		//出现错误直接跳出,不会继续运行
		System.out.println("Test1");
		MyMath mm=new MyMath();
		Assert.assertEquals(2, mm.add(1, 2, 3));
		Assert.assertEquals(0, mm.add(3, 3, 3));
		Assert.assertFalse(8==mm.add(1, 1, 1));
		
		Assert.assertEquals(1, 1);
	}
	@Test
	public void test2() {
		System.out.println("Test2");
		
		
	}
}	

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AirTrioa/article/details/83063127