if (contents != null
&& contents.isDataFlavorSupported(DataFlavor.stringFlavor) ) {
try {
return (String) contents.getTransferData(DataFlavor.stringFlavor);
}
catch (Exception ex){
return null;
}
}
return null;
}
很可能我在這個方法中測試的有點太多。最好將一些測試轉移到裝備中。無論如何,盡一切辦法進行測試。[Page]
通過代碼結構進行測試
當您已經測試了應用程序的基本功能,考慮代碼中的替代路徑就變得非常重要了。在大多數語言中,您可以按照下面的步驟分解您的測試:
為每個程序包或者模板編寫一個測試。
當每個程序包都有了至少一個測試,再為每一個類編寫一個測試。
當每個類都有了至少一個測試,再為每一個方法編寫一個測試。
當每個方法都有了至少一個測試,使用一個代碼覆蓋率工具如 Cobertura 為每個分支編寫一個測試,直到每一行代碼都能夠被測試。
您也可以在第 4 步之前使用一個代碼覆蓋率工具,但是我寧愿您手動完成前面的步驟。雖然很多類、程序包和方法都可以通過功能測試進行測試,但是當您從一個程序員的角度而不是從一個用戶的角度查看程序時,經常會發現不同的問題。
實際上,在很多情況下,您從來都不會接觸到第 4 步。您完全沒有時間或者預算來編寫每個可能的測試。這樣也可以,因為做一些測試和不作測試的區別比做所有的測試和做一些測試的區別更大更重要。
自動測試
可以使用反射生成一個測試骨架。這樣能夠更容易找到您需要測試的所有公有方法。每個測試都像這樣開始:
public void testMethodName() {
fail(\"Test Code Not Written Yet\");
}
這種方法不好的一面是會立刻得到成百上千個失敗的測試。一個可供選擇的方法是在每個測試中添加一個 TODO 注釋而不是完全失敗。然后當時間允許時,您再檢查并補充這些測試。
public void testMethodName() {
// TODO fill in test code
}
如果您使用的是 JUnit 4,您能夠簡單地將測試注釋為 @Ignore,直到您將它們填寫完,例如:
@Ignore public void testMethodName() {
// TODO fill in test code
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/