您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
Junit源碼解析總結(jié)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2016/3/10 13:58:30 ] 推薦標(biāo)簽:軟件測(cè)試 單元測(cè)試

  前面的博客我們也已經(jīng)整理到了,我們使用junit38,在寫測(cè)試類的時(shí)候我們的測(cè)試類必須繼承TestCase。這個(gè)所有測(cè)試類的父類在junit.framework包下面。
  前面我們的整理都是說(shuō)直接在IDE中直接運(yùn)行測(cè)試類,右擊然后run as junit。當(dāng)然我們還可以自己寫main方法來(lái)運(yùn)行測(cè)試,其實(shí)都一樣。
  OK,現(xiàn)在我們來(lái)寫一個(gè)例子,直接運(yùn)行測(cè)試類的main方法來(lái)跑測(cè)試。代碼如下:
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è)測(cè)試類,用main方法來(lái)驅(qū)動(dòng)測(cè)試。
*/
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來(lái)run測(cè)試。
*/
public static void main(String[] args)
{
TestRunner.run(LinkinTest2.class);
}
}
  前面的3篇博客,我已經(jīng)認(rèn)真的整理過(guò)了junit測(cè)試的3個(gè)步驟,這里做一個(gè)總結(jié)。
  我們來(lái)自己寫的測(cè)試類上的一個(gè)測(cè)試方法打一個(gè)斷點(diǎn),然后看下eclipse中junit方法調(diào)用的情況。

  OK,上面的2張圖很直接了說(shuō)明了測(cè)試開始到測(cè)試方法真正被執(zhí)行的所有的過(guò)程,我在這里也不做贅述了。之后的結(jié)果收集,無(wú)疑是在每個(gè)測(cè)試類中傳遞一個(gè)TestResult類,通過(guò)printerWriter來(lái)打印日志而已,這里也不在贅述了。
  在前面的演示junit源碼過(guò)程中,我自己也修改了好多的控制臺(tái)輸出。后這里寫2個(gè)測(cè)試?yán),?lái)一起看下控制臺(tái)的輸出,整體回顧下junit的整個(gè)測(cè)試過(guò)程好了。
  2個(gè)測(cè)試類代碼如下:
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í)行被測(cè)試代碼====");
final String str = "林肯:這里是自己的被測(cè)試的正確代碼";
System.out.println(str);
System.out.println("======>結(jié)束執(zhí)行被測(cè)試代碼====");
Assert.assertEquals(str, str);
}
public void testLinkin8Error()
{
System.out.println("======>開始執(zhí)行被測(cè)試代碼====");
final String str = "林肯:這里是自己的被測(cè)試的錯(cuò)誤代碼";
System.out.println(str);
System.out.println("======>結(jié)束執(zhí)行被測(cè)試代碼====");
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());
}
}

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd