1.Junit概述:
①Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。
②Junit測試是自動化測試的一種方式,它使得bug容易被控制。
③Junit本質上是一套框架,即開發(fā)者制定了一套條條框框,遵循這此條條框框要求編寫測試代碼,如繼承某個類,實現(xiàn)某個接口,可以用Junit進行自動測試了。
④由于Junit相對獨立于所編寫的代碼,可以測試代碼的編寫可以先于實現(xiàn)代碼的編寫,XP 中推崇的 test first design的實現(xiàn)有了現(xiàn)成的手段:用Junit寫測試代碼,寫實現(xiàn)代碼,運行測試,測試失敗(狀態(tài)條為:紅色),修改實現(xiàn)代碼,再運行測試,直到測試成功(狀態(tài)條為:綠色)。以后對代碼的修改和優(yōu)化,運行測試成功,則修改成功。
2.Junit 相關使用
①概念:
|- TestCase(測試用例)--擴展Junit的TestCase類的類。它以testXXX方法的形式包含一個或多個測試。一個testcase把具有公共行為的測試歸入一組。
|- TestSuite(測試集合)--組測試。一個test suite是吧多個相關測試歸入一組的快捷方式。例如,如果沒有為TestCase 定義一個test suite,那么Junit會自動提供一個test suite。包含TestCase中所有測試。
|- TestRunner(測試運行器)--執(zhí)行test suite的程序。Junit提供了幾個test runner,可以用來執(zhí)行你的測試。 沒有TestRunner解開,只有一個所偶test runner都繼承的BaseTestRunner. 因此,當我們編寫TestRunner的時候,實際上指的是任何繼承BaseTestRunner的test runner類。
②Junit成員共同產生測試結果:
TestCase + TestSuite + BaseTestRunner = TestResult
③JUnit基本框架的結構
|- import聲明引入必須的JUnit類
|- 定義一個測試類從TestCase繼承
|- 必需一個調用super(String)的構造函數(shù)
|- 測試類包含一些以test..開頭的測試方法
|- 每個方法包含一個或者多個斷言語句
當然還有一些其他的內容,但滿足以上幾條的已經是一個JUnit測試了
④JUnit的命名規(guī)則和習慣
|- 如果有一個名為ClassA的被測試函數(shù),那么測試類的名稱是TestClassA
|- 如果有一個名為methodA的被測試函數(shù),那么測試函數(shù)的名稱是testMethodA
⑤介紹Test Case、test suite、Test Runner常規(guī)使用: (使用的Eclipse自帶的Junit)。
|-Test Case
Java代碼 復制代碼
import junit.framework.*; //導入junit.jar包
/*TestXxx繼承自TestCase(命名規(guī)范:一般在類名前加Test)*/
public class TestXxx extends TestCase{
/*測試方法的具體實現(xiàn)(命名規(guī)范:以小寫的testXxx形式。否則Junt不會自動識別該方法為測試方法)*/
public void testXxx(){};
}
[java] view plaincopy
import junit.framework.*; //導入junit.jar包
/*TestXxx繼承自TestCase(命名規(guī)范:一般在類名前加Test)*/
public class TestXxx extends TestCase{
/*測試方法的具體實現(xiàn)(命名規(guī)范:以小寫的testXxx形式。否則Junt不會自動識別該方法為測試方法)*/
public void testXxx(){};
}
|-test suite
Java代碼 復制代碼
import junit.framework.Test;
public static Test suite(){
TestSuite suite = new TestSuite(); //實例化
suite.addTest(new MoneyTest("testXxx")); //添加測試方法
suite.addTestSuite(TestMoney.class); //添加整個測試到集合中
}
[java] view plaincopy
import junit.framework.Test;
public static Test suite(){
TestSuite suite = new TestSuite(); //實例化
suite.addTest(new MoneyTest("testXxx")); //添加測試方法
suite.addTestSuite(TestMoney.class); //添加整個測試到集合中
}
|- Test Runner (junit.textui.TestRunner)
Java代碼 復制代碼
public static void main(String args[]){
junit.textui.TestRunner.run(suite()); //將testsuite 執(zhí)行。
}
[java] view plaincopy
public static void main(String args[]){
junit.textui.TestRunner.run(suite()); //將testsuite 執(zhí)行。
}