在目标 c 中创建简单的 OCMock 单元测试

Posted

技术标签:

【中文标题】在目标 c 中创建简单的 OCMock 单元测试【英文标题】:Create simple OCMock unit test in objective c 【发布时间】:2013-01-30 08:39:40 【问题描述】:

我为我的静态类库配置了 OCMock,并创建了这样的简单方法。

#import "iosExample.h"
@implementation IOSExample

-(NSString *)MyTest

return @"Nuwanga";


-(int *)MyAge

    int a=5;
    int b=5;
    int product=a*b;
    return product;

 @end

在 OCUnit 测试中,我创建了这个方法,如下所示。

-(void)testMyAge

    int a=5;
    int b=5;
    int product=a*b;
    STAssertTrue((product > 0), @"The Product was less than zero");

我的问题是如何在 OCMock 单元测试中创建返回类型测试方法???

谢谢

【问题讨论】:

阅读OCMock的文档标签。 我不明白你的问题。 OCMock 用于“模拟”其他对象,替换方法以便编写没有外部依赖的单元测试。你想模拟一些东西还是只写一个普通的单元测试? 另外,该代码很容易模拟。没有要模拟的类,只有一个方法。 NSObject 类中的这个类。我需要通过对类使用 Mock 对象来进行单元测试。我如何正确使用此方法 :: id mock1=[OCMockObject mockForClass:] 你想在这里模拟什么? 【参考方案1】:

也许你想做类似的事情

-(void)testMyAge

    IOSExample *exampleUndertest = [[IOSExample alloc] init];


    STAssertTrue(([exampleUndertest MyAge] > 0), @"The Product was less than zero");

问候, 昆汀

【讨论】:

【参考方案2】:

对于 TDD,您可以如下修改代码

-(int *)MyAge:(int)inA and:(int)inB

    int product=inA*inB;
    return product;

而你的测试用例会变成这样

-(void)testMyAge

    int product=[sut MyAge:5 and:5];
    STAssertTrue((product > 0), @"The Product was less than zero");

我认为在这种情况下不需要模拟。

【讨论】:

以上是关于在目标 c 中创建简单的 OCMock 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

XCode - iOS - <OCMock/OCMock.h> 文件未找到

如何在目标c中创建带有标签和文本字段的自定义单元格

OCmock 和 MKReverseGeocoder

经典源码分析之 OCMock

如何使用 OCMock 3 在单元测试中检查函数的返回值

如何在目标 c 中创建程序化自动布局?