都準(zhǔn)緒,開始建立測試了, 所以現(xiàn)在需要給測試取一個名稱。 你可能說,“這不是問題: 在每個類面前加個Test是了!” 但并不是那么簡單的, 讓我告訴你這樣如果可能造成的問題:
當(dāng)時候我們在使用TDD的方式開發(fā)時, 需要測試的class或者method可能都不存在。
也可能一個test 含蓋了好幾個方法,甚至好幾個classes。
這些僅僅是普通的問題, 下面還有更多。
給個在test命名上的建議: test 類的取名首先應(yīng)該表達(dá)出這個類是一個test類,并且能確切的表示出他要檢查哪些,留有這個原class名的味道。 其實(shí)這很容易,請別擔(dān)心這個名稱會變的很長或者很丑陋,自己隨便怎樣取都可以。
下面我們將使用Eclipse中的JUnit工具建立我們的第一個測試,假定你已經(jīng)下載了這個產(chǎn)品的當(dāng)前版本, 如果沒有,你隨時可以從它的官方網(wǎng)站(www.eclipse.org)下載。我們需要JUnit,你也可以從它的官方網(wǎng)站(www.junit.org)上下載,下載并解壓縮到你硬盤中存放java libaries的地方。
打開Eclipse.我們將建立一個新的工程的工作空間(workplace project) 點(diǎn) File -> New ->Project,選擇Java一路Next。 輸入工程名稱(project name),比如ProjectWithJUnit. 點(diǎn)擊完成。 這樣建立了一個新工程,讓我們配置一下我們的Eclipse,于是,我們把JUnit library 添加到build path. 點(diǎn)擊 Project-->Properties, 選擇Java Build Path Libraries, 點(diǎn)Add Exteranal JARs 選中JUnit.jar。 你將會看到JUnit將會出現(xiàn)在的屏幕上 libraries列表中。 點(diǎn)Okay,Eclipse將強(qiáng)制rebuild所有的build paths.
我們已經(jīng)準(zhǔn)備好,開始寫我們的"Hello World"了 . 讓我們遵照TDD規(guī)范:在編碼之前建立測試。為了, 我們將假頂我們將要寫的類名是HelloWorld 有一個返回字符串的方法 say().
要建立這樣一個test, 在ProjectWithJUnit標(biāo)題上右鍵, 選擇New -> Other,展開"Java", 選擇JUnit. 在對話框的右邊一攔里選擇TestCase,接著點(diǎn)Next. 參見圖1。
圖1。 在Eclipse 中建立JUnit test
在Test class:一攔里輸入我們需要測試的class--HelloWorld。并且給Test case取個名稱--- 比如,TestThatWeGetHelloWorldPrompt(是的,這看上去太長了,但是它能很清楚表達(dá)出它的意思) 點(diǎn)Finish完成。
下面是 TestThatWeGetHelloWorldPrompt.java的代碼:
public class TestThatWeGetHelloWorldPrompt extends TestCase { public TestThatWeGetHelloWorldPrompt( String name) { super(name); } public void testSay() { HelloWorld hi = new HelloWorld(); assertEquals("Hello World!", hi.say()); } public static void main(String[] args) { junit.textui.TestRunner.run( TestThatWeGetHelloWorldPrompt.class); } }
這個代碼一點(diǎn)都不復(fù)雜,僅僅有一點(diǎn)點(diǎn)特別。 不管怎樣,讓我們詳細(xì)的檢查它。 我們繼承了JUnit的TestCase. (TestCase 在JUnit的javadoc里定義是"用來運(yùn)行多個Test的固定裝置")。 JUnit也定義了TestSuite 由于一組關(guān)聯(lián)的TestCase組成..
通過以下兩步來建立我們簡單的Test Case;
建立Junit.framework.TestCase的實(shí)例.
定義一些 以"test"開頭的測試函數(shù), 并且返回一空值.(比如 testWasTranscationSuccessful(),testShow()等等).
TestThatWeGetHelloWorldPrompt.java 同時遵循這些標(biāo)準(zhǔn): 這些TestCase的子類含有一個testSay()的方法. 這個方法由assertEquals()方法調(diào)用, 用于檢驗(yàn)say()的返回值(按照這里的做法返回應(yīng)該是不一致,因?yàn)橐婚_始建立的HelloWorld 我們讓say()返回的值是null).