首先,maven项目中引入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
</dependency>
在test目录下建立同要测试的类同级的目录,创建测试的类
如下:
1、被测试的类:
public class Add {
int add(int a, int b)
{
return a + b;
}
}
2、测试类
public class AddTest {
@Test
public void add()
{
int a = new Add().add(3,5);
System.out.println(a);
}
}
进行单元测试时,我们编写完测试类,右键执行即可。
另外,单元测试常常伴随着一些常用的方法,如下:
// 当前类初始化之前执行,仅执行一次
@BeforeClass
public static void beforeClass() throws Exception {
System.out.println("BeforeClass");
}
// 当前类初始化之后执行,仅执行一次
@AfterClass
public static void afterClass() throws Exception {
System.out.println("AfterClass");
}
// 每一个@Test方法之前都执行
@Before
public void setUp() throws Exception {
System.out.println("测试开始");
}
// 每一个@Test方法之后都执行
@After
public void tearDown() throws Exception {
System.out.println("测试结束");
}
// Ignore表示忽视的测试方法
@Ignore
@Test
public void Test(){
int n = 5;
String str = "cty";
double d = 3.0d;
}
//在junit4中,引入了一个新的断言assertThat,以下是它的使用方法
@Test
public void assertTest() {
int a = new Add().add(3, 5);
/**数值匹配**/
//测试变量是否大于指定值
assertThat(a, greaterThan(50));
//测试变量是否小于指定值
assertThat(a, lessThan(100));
//测试变量是否大于等于指定值
assertThat(a, greaterThanOrEqualTo(50));
//测试变量是否小于等于指定值
assertThat(a, lessThanOrEqualTo(100));
//测试所有条件必须成立
assertThat(a, allOf(greaterThan(50), lessThan(100)));
//测试只要有一个条件成立
assertThat(a, anyOf(greaterThanOrEqualTo(50), lessThanOrEqualTo(100)));
//测试无论什么条件成立(还没明白这个到底是什么意思)
assertThat(a, anything());
//测试变量值等于指定值
assertThat(a, is(100));
//测试变量不等于指定值
assertThat(a, not(50));
/**字符串匹配**/
String url = "http://www.taobao.com";
//测试变量是否包含指定字符
assertThat(url, containsString("taobao"));
//测试变量是否已指定字符串开头
assertThat(url, startsWith("http://"));
//测试变量是否以指定字符串结尾
assertThat(url, endsWith(".com"));
//测试变量是否等于指定字符串
assertThat(url, equalTo("http://www.taobao.com"));
//测试变量再忽略大小写的情况下是否等于指定字符串
assertThat(url, equalToIgnoringCase("http://www.taobao.com"));
//测试变量再忽略头尾任意空格的情况下是否等于指定字符串
assertThat(url, equalToIgnoringWhiteSpace("http://www.taobao.com"));
/**集合匹配**/
List<User> user = new ArrayList<User>();
user.add(user1);
user.add(user2);
//测试集合中是否还有指定元素
assertThat(user, hasItem(user1));
assertThat(user, hasItem(user2));
/**Map匹配**/
Map<String, User> userMap = new HashMap<String, User>();
userMap.put(user1.getUsername(), "张三");
userMap.put(user2.getUsername(), "李四");
//测试map中是否还有指定键值对
assertThat(userMap, hasEntry(user.getUsername(), "张三"));
//测试map中是否还有指定键
assertThat(userMap, hasKey(user.getUsername()));
//测试map中是否还有指定值
assertThat(userMap, hasValue(user));
}
可根据不同功能进行使用和改造。比如如果需要记录程序执行时间,就可以在before和after上加上时间记录。