{
...
public void testInsert()
{
// Insert a test user:
User user = new User("some@email.address");
UserDatabase database = new UserDatabase();
database.insert(user);
// Make sure the data really got there:
User db_user = database.find("some@email.address");
assertTrue("Expected non-null result",
db_user != null);
assertEquals("Wrong email",
"some@email.address", db_user.getEmail());
assertEquals("Wrong bad flag", false, db_user.isBad());
}
...
}
可能你還有更多測試代碼。(注意一些測試,例如對date類(lèi)的測試)。
assertTrue和assertEquals方法進(jìn)行條件測試。如果測試失敗,他們將返回診斷消息。其重點(diǎn)是這些測試都基于一個(gè)測試框架自動(dòng)執行,并給出測試成敗的標志。這些測試都基于用java語(yǔ)言編寫(xiě)的測試框架Junit類(lèi)(程序附后)。這一框架也能適應其他諸如C, C++, Perl, Python, .NET (all languages), PL/SQL, Eiffel, Delphi, VB等語(yǔ)言環(huán)境。
下一個(gè)問(wèn)題就是:我們有測試,但我們怎樣保證測試數據和實(shí)際數據能?chē)栏駞^分?
不同的鑒別方法
在開(kāi)始之前,我必須指出你最好有一個(gè)測試用的數據庫,你可能更想在非正式的數據庫中實(shí)踐我講的東西。
第一種方法是手工在數據庫中輸入一些預先知道的測試性數據,例如在郵件地址中輸入“testuser01@test.testing”。如果你正在測試數據庫的查詢(xún)功能,你能預先知道,比如說(shuō)有五個(gè),數據庫記錄是以“@test.testing”結尾的。
由以上方式插入的數據必須由測試本身進(jìn)行必要的維護。例如,測試必須負責刪除所建立的測試數據,而避免對實(shí)際數據進(jìn)行操作,從而保證整個(gè)數據庫處于完好狀態(tài)。
這種方法還是存在以下問(wèn)題:
你不得不和其他編程人員進(jìn)行數據協(xié)調——假設他們也有他們自己的測試數據庫。
在數據庫中有些特殊的數據并不正確,如一些特別的郵件地址和被保留餓編號前綴。
原文轉自:http://kjueaiud.com