有什么办法可以在多个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类中,但我希望通用解决方案能够在多个测试用例之间共享代码,而不仅仅是在同一测试用例中的方法之间共享代码。
顺便说一句,我有一个类似的问题,使用猕猴桃。