2011-11-23 156 views
4

我們剛開始寫集成測試,以測試數據庫,數據訪問層,Web服務調用等 目前,我有一些想法寫集成測試,如 1)總是重新創建表在初始化函數中。 2)如果您在同一功能中保存新內容,請務必清除功能內的數據。編寫集成測試,測試數據庫,Web服務調用

但我想知道一些更好的做法。

+0

可能dublicate http://stackoverflow.com/questions/1328730/integration-testing-best-practices –

+0

我看過那個帖子,但更多的是關於分離快速和慢速測試。 – alice7

回答

1

當單元測試DAL,我不喜歡這樣寫道:

[TestFixtureSetUp] 
public void TestFixtureSetUp() 
{ 

    //this grabs the data from the database using an XSD file to map the schema 
    //and saves it as xml (backup.xml) 
    DatabaseFixtureSetUp(); 
} 

[SetUp] 
public void SetUp() 
{ 

    //this inserts test data into the database from xml (testdata.xml) 
    //it clears the tables first so you have fresh data before every test. 
    DatabaseSetUp(); 
} 

[TestFixtureTearDown] 
public void TestFixtureTearDown() 
{ 
    //this clears the table and inserts the backup data into the database 
    //to return it to the state it was before running the tests. 
    DatabaseFixtureTearDown(); 
} 
+0

@ alice7,我很高興這回答了你的問題。從你的問題中不清楚你想要什麼。看起來你想要關於如何構建單元測試類的建議。 – neontapir

+0

我希望能夠幫助您構建集成測試以及使用獨立測試數據庫等一些建議。 – alice7

5

如同所有的測試,就必須從已知狀態一個啓動,並在測試完成,明確降到乾淨的狀態

此外,測試代碼經常被忽視,因爲不是真正的代碼,因此不能正確維護... 它比代碼更重要。至少同樣多的設計,應該進入你的測試架構。規劃合理的抽象級別,例如,如果您正在測試Web應用程序,請考慮具有這樣的層級:抽象化您的瀏覽器交互,抽象頁面上的組件,抽象頁面和測試。測試與頁面和組件交互,頁面與組件交互,組件與瀏覽器交互層交互,瀏覽器交互層與您的(可能是第三方)瀏覽器自動化庫進行交互。

如果您的測試代碼沒有得到適當的維護或經過深思熟慮,那麼它們會成爲一種障礙,而不是編寫新代碼的幫助。

如果你的團隊是新的測試,有很多coding katas在那裏,旨在教的良好測試(進出這是以良好的代碼),他們一般集中在一個單元測試水平的重要性,但是許多校長是一樣的。

2

一般來說,我建議你看看嘲笑你的數據庫訪問層和Web服務調用類,以使其更具可測性。關於這個問題有很多書籍,如Osherove的單元測試藝術

之前已經說過,集成測試應該是可重複的。因此,我會選擇選項1來編寫一個腳本,該腳本可以從頭開始用測試數據重新創建數據庫。選項2比較困難,因爲它很難確定清潔功能不會留下不必要的數據殘留。