Есть ли способ обмена кодом между несколькими тестовыми примерами OCUnit? Может быть, мне не хватает чего-то очевидного, но я не смог это сделать ...Как поделиться кодом между несколькими тестовыми примерами OCUnit?
Я попытался поместить общий код в другой класс, но, похоже, вы можете использовать только макросы STAssertxxx внутри методов экземпляра классы, наследуемые от SenTestCase. Принимая это во внимание, я поместил этот общий код в singleton, наследующий от 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, но я хотел бы, чтобы общее решение для совместного использования кода среди нескольких тестовых примеров не только среди методов в одном тестовом случае.
Кстати, у меня есть аналогичная проблема с использованием Kiwi.