前面的博客我們也已經(jīng)整理到了,我們使用junit38,在寫測試類的時(shí)候我們的測試類必須繼承TestCase。這個(gè)所有測試類的父類在junit.framework包下面。
前面我們的整理都是說直接在IDE中直接運(yùn)行測試類,右擊然后run as junit。當(dāng)然我們還可以自己寫main方法來運(yùn)行測試,其實(shí)都一樣。
OK,現(xiàn)在我們來寫一個(gè)例子,直接運(yùn)行測試類的main方法來跑測試。代碼如下:
package org.linkinpark.commons.textui;
import org.linkinpark.commons.framework.TestCase;
import org.linkinpark.junit.Assert;
/**
* @創(chuàng)建作者: LinkinPark
* @創(chuàng)建時(shí)間: 2016年2月4日
* @功能描述: 寫一個(gè)測試類,用main方法來驅(qū)動(dòng)測試。
*/
public class LinkinTest2 extends TestCase
{
public void test1()
{
Assert.assertEquals("1", "1");
}
/**
* @創(chuàng)建時(shí)間: 2016年2月4日
* @相關(guān)參數(shù): @param args
* @功能描述: 調(diào)用TestRunner來run測試。
*/
public static void main(String[] args)
{
TestRunner.run(LinkinTest2.class);
}
}
前面的3篇博客,我已經(jīng)認(rèn)真的整理過了junit測試的3個(gè)步驟,這里做一個(gè)總結(jié)。
我們來自己寫的測試類上的一個(gè)測試方法打一個(gè)斷點(diǎn),然后看下eclipse中junit方法調(diào)用的情況。
OK,上面的2張圖很直接了說明了測試開始到測試方法真正被執(zhí)行的所有的過程,我在這里也不做贅述了。之后的結(jié)果收集,無疑是在每個(gè)測試類中傳遞一個(gè)TestResult類,通過printerWriter來打印日志而已,這里也不在贅述了。
在前面的演示junit源碼過程中,我自己也修改了好多的控制臺(tái)輸出。后這里寫2個(gè)測試?yán)樱瑏硪黄鹂聪驴刂婆_(tái)的輸出,整體回顧下junit的整個(gè)測試過程好了。
2個(gè)測試類代碼如下:
package org.linkinpark.commons.textui;
import org.linkinpark.commons.framework.TestCase;
import org.linkinpark.junit.Assert;
public class LinkinTest1 extends TestCase
{
public LinkinTest1(String methodName)
{
super(methodName);
}
public void setUp()
{
System.out.println("這里是自己定義的setUp()");
}
public void tearDown()
{
System.out.println("這里是自己定義的tearDown()");
}
public void testLinkin4Normal()
{
System.out.println("======>開始執(zhí)行被測試代碼====");
final String str = "林肯:這里是自己的被測試的正確代碼";
System.out.println(str);
System.out.println("======>結(jié)束執(zhí)行被測試代碼====");
Assert.assertEquals(str, str);
}
public void testLinkin8Error()
{
System.out.println("======>開始執(zhí)行被測試代碼====");
final String str = "林肯:這里是自己的被測試的錯(cuò)誤代碼";
System.out.println(str);
System.out.println("======>結(jié)束執(zhí)行被測試代碼====");
Assert.assertEquals("這里是我期望的錯(cuò)誤邏輯輸出", str);
}
}
package org.linkinpark.commons.textui;
import org.linkinpark.commons.framework.TestCase;
import org.linkinpark.junit.Assert;
public class LinkinTest1 extends TestCase
{
public LinkinTest1(String methodName)
{
super(methodName);
}
public void testLinkin()
{
Assert.assertTrue(true);
}
}
package org.linkinpark.commons.textui;
import org.linkinpark.commons.framework.Test;
import org.linkinpark.commons.framework.TestCase;
import org.linkinpark.commons.framework.TestSuite;
public class LinkinTestAll extends TestCase
{
public static Test suite()
{
TestSuite suite = new TestSuite().addTestSuite(LinkinTest.class);
return suite.addTest(new LinkinTest1("testLinkin"));
}
public static void main(String args[])
{
TestRunner.run(suite());
}
}