赞
踩
作用:
在写完代码的时候,测试写好的程序是否存在bug。
与一般测试的区别:
一般测试(main方法测试):
public class T {
public int add(int x, int y) {
return x + y;
}
public static void main(String[] args) {
System.out.println(new T().add(1, 2));
}
}
存在问题:
使用Junit
import org.junit.*;
import static org.junit.Assert.*;
public class TTest {
@Test
public void add() {
int add = new T().add(1, 2);
assertEquals(3, add);
}
}
keeps the bar green,to keep the code clean.
这句话表示绿色为测试通过:
如果测试失败为红色(例如将结果改为4):
assertXxx
类型的函数一般用来测试是否满足条件
如:assertEquals(long expected, long actual)
测试expected
和actual
是否相等,如上面的例子所示。
带有message参数的重载
查看文档我们会发现,有很多带有message参数函数重载,这个参数的作用是在测试失败的时候打印的信息。
如下:
assertThat
assertThat接受两个参数,使我们可以以英语语法的形式来达到我们想要的测试效果了,例如可以使用下面代码代替刚才的assertEquals:
import org.junit.*;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
public class TTest {
@Test
public void add() {
int add = new T().add(1, 2);
assertThat(add, is(3));
}
}
@Test表示这个方法是一个测试方法,有两个参数,expected表示期望抛出什么异常,timeout表示程序的最长运行时间,超过指定的时间就会测试失败(单位是毫秒)。
@Ignore表示被忽略的测试方法,加上该注解之后这个方法不会被执行
@Before和@After表示在每一次执行测试方法的前后执行
@BeforeClass和@AfterClass分别在类初始化之前执行,所以必须为静态方法。用于加载配置文件,连接数据库等。
package com.qianyu; import org.junit.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; public class TTest { @BeforeClass public static void beforeClass() { System.out.println("TTest.beforeClass"); } @Before public void before() { System.out.println("TTest.before"); } @Test public void add() { assertThat(new T().add(1, 2), equalTo(3)); System.out.println("TTest.add"); } @Test public void add2() { assertThat(new T().add(2, 2), equalTo(4)); System.out.println("TTest.add2"); } @Ignore public void ignore() { System.out.println("TTest.ignore"); } @After public void after() { System.out.println("TTest.after"); } @AfterClass public static void afterClass() { System.out.println("TTest.afterClass"); } }
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。