有什麼辦法可以在多個OCUnit測試用例之間共享代碼?也許我錯過了一些明顯的東西,但我一直沒能做到這一點...如何在幾個OCUnit測試用例之間共享代碼?
我試圖把通用代碼放在另一個類中,但似乎你只能在實例方法中使用STAssertxxx宏從SenTestCase繼承的類。考慮到這一點,我把這個通用代碼放在一個從SentTestCase繼承而來的沒有測試方法的單例中,但是這似乎破壞了OCUnit的一些內部假設,因爲我沒有從共享代碼中的失敗測試中得到任何錯誤。
我當前的代碼(不工作)是這樣的:
@interface TestHelper : SenTestCase
+ (TestHelper *)sharedHelper;
- (void)assertSomething:(id)object;
@end
@implementation TestHelper
+ (TestHelper *)sharedHelper
{
// Typical singleton magic
}
- (void)assertSomething:(id)object
{
STAssertWhateverOnObject(object, ...);
}
@end
@interface RealTestCase : SenTestCase
- (void)testWhatever;
- (void)testAnotherThing;
@end
@implementation RealTestCase
- (void)testWhatever
{
[[TestHelper sharedHelper] assertSomething:someObject];
STAssertOtherThings(someObject, ...);
}
- (void)testAnotherThing
{
[[TestHelper sharedHelper] assertSomething:someSimilarObject];
STAssertSomeOtherThings(someSimilarObject, ...);
}
@end
請注意,這是一個簡單的例子。在這種情況下,我可以將所有代碼放入RealTestCase類中,但我希望通用解決方案能夠在多個測試用例之間共享代碼,而不僅僅是在同一測試用例中的方法之間共享代碼。
順便說一句,我有一個類似的問題,使用獼猴桃。