2014-07-10 30 views
4

我正在使用MxUnit作爲我的ColdFusion項目的測試框架。但我不確定測試用例中的函數執行的順序。我在數據庫中爲我的測試插入了虛擬記錄,在beforeTests()中,並刪除了afterTests()中的那些記錄。我在我的測試用例mxunit測試用例中函數執行的順序

public void function Read() { 
//Block of code 
} 
public void function Save() { 
//Block of code 
} 
public void function Delete() { 
//Block of code 
} 

但在第一Delete()得到執行以下功能,所以read()返回「發現沒有記錄」(故障信息),因爲該記錄獲取刪除刪除()本身。所以我認爲它按字母順序運行,所以我相應地更改了函數名稱(Read(),Save(),XDelete() - 因爲它是按字母順序排列的)。同樣的事情正在發生。

但它工作正常,當我重新命名爲A_Read(),B_save(),C_Delete()函數。

所以有人解釋了函數執行的順序。

+1

除了Simon和Duncan所說的之外,你應該嘲笑你的代碼碰到數據庫的那些部分。單元測試首先不應該碰到數據庫。 –

+2

另外:MXUnit有點死了。你是否可以切換到TestBox?這是一個更好的體驗,並且仍然(非常)積極地發展。如果你只是從單元測試開始;我建議*不要*從MXUnit開始。 –

+0

好的@AdamCameron感謝您提供寶貴的信息,將考慮關於測試箱。 –

回答

4

你不能保證他們將以什麼順序運行,假設它是隨機的。

http://blog.adamcameron.me/2013/11/unit-testing-mxunit-and-test-scenario.html

對於給定的試運行也不能保證什麼順序測試運行在 ,但在現實中,它是向下的ColdFusion如何將它們暴露在 CFC的元數據,我想。他們的執行順序當然不是 隨機。但是不應該假定任何測試執行順序。而且, 的確,每個測試真的需要從其他 測試完全獨立於CFC

你真的需要重新思考你如何做你的測試,所以他們都是相互獨立的。

但是如果你真的必須:http://blog.bittersweetryan.com/2012/01/using-new-orderedtestdecorator-in.html

4

你可能最好使用而不是beforeTests和afterTests安裝和拆卸。這樣新的虛擬記錄將在每次測試運行之前插入到數據庫中,並且測試不會相互依賴。

+0

是啊!你是正確的,但希望它可能會延遲執行時間,對於每個測試,它都會插入和刪除虛擬記錄。 –

+0

另一種方法是創建一對私有幫助器方法,一個用於創建虛擬記錄,另一個用於刪除它們,並在需要時從測試用例中調用幫助器方法。 –