JUnit是一个Java语言的单元测试框架。多用在白盒测试中,不过在写程序时也会用到,这里简单的介绍如果使用Junit,采用的IDE是MyEcplise10。
首先,编写一个要测试的类CalcHub.java。:
package com.jni;
public class CalcHub
{
public int add(int num1,int num2)
{
return num1+num2;
}
public int square(int num1)
{
return num1*num1;
}
public boolean isNegative(int num1)
{
return num1<0;
}
public String strPing(String str1,String str2)
{
return str1+str2;
}
}
类中有求和、求平方、判断负数、字符串拼接四个方法,由于只是简单测试,所以就比较简单,也没考虑其他因素。
然后我们可以编写测试类,在MyEcplise中,已经集成了Junit。
先选中要测试的CalcHub.java,然后右击在New中,选择其他,搜索 Junit ,就会出现:
选中第一个,出现选择框:
当我们选择3.X时,会生成文件CalcHubTest,我们再添加一些test方法:
package com.jni;
import junit.framework.TestCase;
public class CalcHubTest extends TestCase {
private CalcHub ch = new CalcHub();
protected void setUp() throws Exception {
super.setUp();
System.out.println("Check in");
}
protected void tearDown() throws Exception {
super.tearDown();
System.out.println("Check out");
}
public void testAdd() {
assertEquals(100, ch.add(20, 80));
}
public void testSquare() {
assertEquals(100, ch.square(10));
}
public void testIsNegative() {
assertTrue(ch.isNegative(-1));
}
public void testStrPing() {
assertEquals("mylove", ch.strPing("my", "love"));
}
}
其中testXXX对应着CalcHub中的方法XXX,setup/teardown表示每次testXXX前/后执行一遍。
执行一下CalcHubTest,MyEclipse就跳到JUnit界面了:控制可以看见控制台也打印出来了。
如果之前选着的是JUnit4.x 的话,文件就是这样:
package com.jni;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class CalcHubTest4 {
private CalcHub ch = new CalcHub();
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("in to test");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("out of test");
}
@Before
public void setUp() throws Exception {
System.out.println("Check in");
}
@After
public void tearDown() throws Exception {
System.out.println("Check out");
}
@Test
public void testAdd() {
assertEquals(100, ch.add(20, 81));
}
@Test
public void testSquare() {
assertEquals(100, ch.square(11));
}
@Test
public void testIsNegative() {
assertTrue(ch.isNegative(1));
}
@Test
public void testStrPing() {
assertEquals("mylove", ch.strPing("my", "love2"));
}
}
和3.x不同,里面多了setUpBeforeClass、tearDownAfterClass。表示在文件执行前/退出前,各执行一次。
因为CalcHubTest4文件中,改动了数据,所以测试都没通过。
其实在4.x文件中,只要任意方法上面标有@BeforeClass/@AfterClass/@Before/@After,就表示在文件所有testXXX执行前/所有testXXX执行后/每个testXXX执行前/每个testXXX执行后,执行一次。