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执行后,执行一次。