我在XCode中使用SenTest進行單元測試。我必須爲我的單元測試運行一個命令行任務來測試。我可以在我的測試類的+初始化方法(當然是SenTestCase的子類)中做到這一點。SenTestKit:所有測試運行後清理?
我想在測試完成時終止命令行任務。由於沒有+初始化的對立面,所以我很難過。
是否有某種方法來繼承SenTest類來做到這一點,我忽略了?
我在XCode中使用SenTest進行單元測試。我必須爲我的單元測試運行一個命令行任務來測試。我可以在我的測試類的+初始化方法(當然是SenTestCase的子類)中做到這一點。SenTestKit:所有測試運行後清理?
我想在測試完成時終止命令行任務。由於沒有+初始化的對立面,所以我很難過。
是否有某種方法來繼承SenTest類來做到這一點,我忽略了?
不要在+初始化中運行命令行工具。當類首先發送任何消息時,由Objective-C運行時發送。
相反,在測試的+setUp
方法中運行命令行工具。 (請注意,我真的沒有意思+setUp
而不是-setUp
;許多人似乎是對類和實例方法之間的區別有點模糊)
在這種情況下,類setUp
方法是通過的OCUnit之前調用的一個子類SenTestCase
測試任何被運行,並且一個類tearDown
方法由後的OCUnit在一個SenTestCase
子類AR運行所有測試調用。
因此,對於一個特定的SenTestCase
子類的整個流程是:
+setUp
到SomeTestCase
test
方法SomeTestCase
(稱之爲test___
)
SomeTestCase
-setUp
給它-test___
它-tearDown
它+tearDown
到SomeTestCase
這樣,如果你有什麼需要之前,任何的做你的-test
方法運行,或所有-test
方法運行後需要完成的事情,有一個確定性的點在wh你可以做到這一點。 (而不是依靠內存管理,這不是確定性的,如果你使用GC,可能不是確定性的。)
您應該查看Google Toolbox for Mac或其更多衍生產品GHUnit。兩者(我認爲)至少提供課堂級別的設置和拆解。如果你真的想在運行所有測試之前運行一個命令行,然後在運行測試之後運行第二個命令行(也許殺死第一個命令行),我將修改運行單元測試的shell腳本構建階段(最後一步在UnitTest捆綁包目標的構建階段)。
您不需要任何額外的框架來進行類級別的設置和拆卸;這些是OCUnit的一部分。 – 2010-09-04 10:45:29
我還沒有找到任何關於+ setUp/+拆卸方法的內容。謝謝你的啓發。 – Mel 2010-09-04 20:14:23