ios - 如何在多个 OCUnit 测试用例之间共享代码?

标签 ios unit-testing testing refactoring ocunit

有没有办法在多个 OCUnit 测试用例之间共享代码?也许我遗漏了一些明显的东西,但我一直没能做到......

我试图将公共(public)代码放在另一个类中,但似乎只能在继承自 SenTestCase 的类的实例方法中使用 STAsertxxx 宏。考虑到这一点,我将这个公共(public)代码放在一个继承自 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 时遇到了类似的问题。

最佳答案

我的首选方法是使用函数/方法生成要测试的数据(例如返回 BOOL 条件),而不是进行实际测试。

在某些情况下,我确实使用了宏函数 - 它直接解包到您的测试用例中并且没有任何限制。

关于ios - 如何在多个 OCUnit 测试用例之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993732/

相关文章:

ios - NSAttributedString 和 decomposedStringWithCanonicalMapping 范围

javascript - 单元测试 void 方法 - Jasmine、javascript

java - 如何在 java 中对 jdbc 代码进行单元测试?

java - 单元测试具有外部依赖性的 apache beam 有状态管道

testing - 全天排队作业并在指定时间执行

php - 即使存在片段,assertJson 也会失败

Android - 仪表测试期间应用程序的模拟方法

ios - UIImageView 图片名称比较问题

ios - 金刚鹦鹉 iOS - 点击动画或反转

ios - NSMutableArray ReplaceObjectAtIndex 崩溃