JAVA单元测试注解详解及代码演示

JAVA单元测试注解详解及代码演示

单元测试能不通过main方法运行我们想要运行的方法,所以用于测试某段代码的时候会很方便。

先假设一个简单的类

实现加法和除法两个方法

public class Demo {

	public int add(int a ,int b){
		return a + b ;
	}
	
	public int devide(int a ,int b){	
		try {
			Thread.sleep(105) ;
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return a / b ;
	}
}

下面在另一个类类面开始单元测试

在进行单元测试的时候要引入org.junit.jupiter.api.Test或者org.junit.Test两者都可以进行单元测试,但是版本不同,有些地方或许会不兼容

下面以org.junit.Test为例子做单元测试

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/** * 测试方法的写法: * 1. 方法必须是公有的 * 2. 方法返回值必须是void * 3. 方法必须是无参 * 4. 必须加@Test注解 * * @before :是每个测试方法执行之前都必须要调用一次此方法 * @beforeclass: 是所有测试方法执行之前都必须要调用一次此方法(只会调用一次) * * @after: * @afterclass: * @author Administrator * */
public class DemoTest {

	static Demo d ;
	
// @Before
// public void before(){
// System.out.println("我先执行了");
// d = new Demo() ;
// }
	
	@BeforeClass
	public static void beforeclass(){
		System.out.println("我是静态的方法");
		d = new Demo() ;
	}
	
	@Test
	public void testAdd(){
	// demo() ;
		Assert.assertEquals(10, d.add(4, 6)) ;
	}
	
	@Test(timeout=100)
	public void testDevide(){
		//demo() ;
		Assert.assertEquals(2, d.devide(10, 2)) ;
	}
	
// public void demo(){
// //System.out.println("啊啊啊啊啊啊啊啊啊");
// d = new Demo() ;
// }
	
	@After
	public void after(){
		System.out.println("我执行完了");
	}
}

在eclipse中运行没有出错的情况

运行结果如下

在eclipse中运行出错的情况

把断言里面的10改成8,断言就会报错,单元测试的运行结果也会变成红色。

运行超时的情况

单元测试testDevide()方法时,使用@Test(timeout=100)可以设定运行时间时100ms,如果超时单元测试就会报错。这样可以测试方法的时间复杂度,为后续优化提供帮助。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务