public void testLookupAndInsert() {
VectorAdapter v = new VectorAdapter();
v.insert("this");
v.insert("is");
v.insert("a");
v.insert("test");
assertEquals("Retrieved and inserted elements don't match",
"a",
v.lookup(2));
}
}
然后我們可以實現我們的適配器以通過這個測試,如下所示:
清單 2. 類 VectorAdapter
import java.util.Vector;public class VectorAdapter implements Sequence {
private Vector values = new Vector();
private int length = 0;
public void insert(Object o) {
length += 1;
values.addElement(o);
}
public Object lookup(int i) {
return values.elementAt(i);
}
}
interface Sequence {
public void insert(Object o);
public Object lookup(int i);
}
當 Daikon 在這段代碼上運行時,它可能推斷:對于方法lookup,i總是小于length。Daikon 可能從單元測試中推斷出這一點,并向我們的方法報告一條前置條件:i < length。
然后程序員可以檢查 Daikon 報告的不變量,從而更好地了解其測試覆蓋程序的范圍到底怎么樣。例如,如果 Daikon 開始推斷出大量不想要的不變量,這意味著單元測試只是用不具代表性的可能的程序輸入的子集檢測了程序。
盡管 Daikon 是用 Java 語言編寫的,但它需要用 C++ 編寫的前端,這削弱了它原有的可移植性。盡管如此,還是可以在線獲得針對許多主要平臺的前端構建。此外,Daikon 團隊也打算添加其它平臺所需要的構建。
(您可以在參考資料一節找到關于 Daikon 的下載信息和更多內容。)
可以檢查單元測試覆蓋范圍的分析工具
分析工具可以幫助程序員構建健壯的單元測試套件。迄今為止,完成這一工作主要有兩種方法:
目前有幾種試圖自動從代碼產生單元測試的免費工具,但大多數擔任這項任務的免費工具還處于起步階段。其中一些比較有希望的是 JUnitDoclet 和 JUB(“JUnit test case Builder”的縮寫),可在 SourceForge 上得到它們(參考資料一節提供了它們的鏈接)。
文章來源于領測軟件測試網 http://www.kjueaiud.com/