2013-03-25 74 views
0

使用OCUnit編寫單元測試時,可能會忽略公共接口(.h)中的測試方法定義。但OCUnit關於公共接口中測試方法定義的最佳做法是什麼?您是否需要在OCUnit的測試用例類中的公共接口中定義測試方法

ModelTest.h(沒有定義的測試方法)

@interface ModelTest : SenTestCase 

@end 

ModelTest.m

@implementation ModelTest : SenTestCase 
    - (void) testCreation { 
     ... 
    } 
@end 

ModelTest.h(測試方法定義)

@interface ModelTest : SenTestCase 
    - (void) testCreation; 
@end 

我個人認爲這是更好地在公共接口中反映公共測試方法的定義。但是,最佳做法是什麼?我們無法避免在公共接口中聲明這些方法嗎?

回答

2

非測試類很少依賴於測試類;沒有人會#包含您的ModelTest聲明。所以從封裝或暴露測試方法中獲得的東西並不多。無論如何,測試運動員都會看到他們。

如果從頭文件生成文檔,在.h文件中聲明它們可能會很有用。

有時候,您可能會定義一個SenTestCase的子類,它爲您的測試添加了特殊的輔助方法。如果你這樣做,你可能不想在超類上公開測試方法。但是,最好從超類中完全移除測試用例,將超類視爲一個只包含輔助方法的抽象接口。

1

我不使用單獨的.h和.m來進行OCUnit測試;一切都進入了.m

把東西放在界面中的唯一原因是讓另一個類可以發現它。但是測試是通過反射找到的,而不是通過代碼引用測試用例的特定名稱。

請參閱http://qualitycoding.org/unit-test-template/瞭解我使用的模板以及原因。

+0

感謝有趣的是不要使用.h文件進行單元測試。 – Vladimir 2013-03-25 22:31:00

相關問題