草庐IT

iOS 单元测试之常用框架 OCMock 详解

一、单元测试1.1单元测试的必要性测试驱动开发并不是一个很新鲜的概念了。在日常开发中,很多时候需要测试,但是这种输出是必须在点击一系列按钮之后才能在屏幕上显示出来的东西。测试的时候,往往是用模拟器一次一次的从头开始启动app,然后定位到自己所在模块的程序,做一系列的点击操作,然后查看结果是否符合自己预期。这种行为无疑是对时间的巨大浪费。于是有很多资深工程师们发现,我们是可以在代码中构造一个类似的场景,然后在代码中调用我们之前想要检查的代码,并将运行结果和设想结果在程序中进行比较,如果一致,则说明我们的代码没有问题,由此就产生了单元测试。1.2单元测试的目的单元测试的主要目的是发现模块内部逻辑、

c++ - .mm 测试文件的 OCMock 3.0.2 链接器错误

我正在使用OCMock3.0.2,我通过cocoapods安装它作为我的测试目标:platform:ios,'7.0'xcodeproj'myProject.xcodeproj'target:myTestTargetdopod'OCMock','~>3.0.2'endlink_with"myTestTarget"在我的测试文件(myTest.mm)中,我包含了OCMock并想尝试新的就地验证策略,如下所示:-(void)test_myTest{MyObject*obj=[MyObjectnew];idrobotMock=OCMPartialMock(obj);[objtestMetho

ios - stub [[SomeClazz alloc] init] 不工作但接受的答案说它应该工作

我测试的功能很简单:@implementationMyHandler...-(void)processData{DataService*service=[[DataServicealloc]init];NSDictionary*data=[servicegetData];[selfhandleData:data];}@end我使用OCMock3对其进行单元测试。我需要stub[[DataServicealloc]init]以返回一个模拟实例,我尝试了answerfromthisquestion(这是一个公认的答案)stub[[SomeClazzalloc]init]://Stub'al

iphone - 为什么我的 OCMock 期望和 stub 在 iOS 5 中失败?

我有一些简单的模拟对象,其中设置了一些stub和期望。当我在iOS4.3模拟器上运行测试时,一切都通过了。当我在iOS5上运行时,出现“意外调用方法”故障。作为示例,我有一个方法-(void)foo:(NSString*)bar我为其设置了期望值然后运行。结果是unexpectedmethodinvoked:foo:@"foobar"expected:foo:@"foobar"有人知道为什么会这样,或者如何解决?测试本身非常好,并且已经在iOS4中运行了几个月。 最佳答案 抱歉现在才看到。已经修复了一段时间https://githu

ios - OCMockito stub 单例共享实例方法

我使用OCMock对类lvl方法进行stub,效果很好。现在我需要使用OCMockito实现相同的行为。在OCMock中我有以下内容:_mock=mockClass([MySingletonclass]);OCMStub([_mocksharedSingleton]).andReturn(_mock);在我的例子中,我必须stubsharedSingleton方法,因为它在测试期间在多个地方使用。 最佳答案 OCMock直接stub单例的能力是通过方法调配完成的。对于OCMockito,我有意避免这种方法。我建议您使用某种形式的De

objective-c - 如何在 iOS 5 运行时为基于状态的测试 stub /注入(inject) View Controller ?

我正在寻找一种“最佳实践”/“低测试阻力”的方法来对我的AppDelegate基类中的ViewController进行基于状态的测试。目前,当在类的方法中发生某些事情时,下面提供了一种简单的方法来stub我自己的UIViewController(使用ocmock)。-(FirstViewController*)getFirstViewController{if(self.viewController1){returnself.viewController1;}self.viewController1=[[FirstViewControlleralloc]initWithNibName:

ios - 为什么我不能使用 OCMock stub 这个 GKTurnBasedParticipant 方法?

这是一个OCUnit测试,它简单地stub了GKTurnBasedParticipant的方法playerID:#import#import"OnlineMatchTest.h"#import"OCMock.h"@implementationOnlineMatchTest-(void)setUp{GKTurnBasedParticipant*participant=[OCMockObjectmockForClass:[GKTurnBasedParticipantclass]];[[[(id)participantstub]andReturn:@"123"]playerID];}-(vo

ios - 期望使用 OCMock 从非实例化变量调用方法

我不确定这是否是最好的标题,但基本上我知道变量将在运行函数时实例化。我想对该变量进行部分模拟,并期望在实例化该变量之前调用某些方法。这是我正在尝试做的一个例子。-(void)testMethod{idmockVar=[OCMockpartialMockForObject:self.controller.variable];[[mockVarexpect]someMethod];[self.controllermethod];[mockVarverify];}Controller内部的方法看起来像这样:-(void)method{self.variable=[[Classalloc]in

ios - 使用 OCMock 模拟类选择器

我正在尝试测试一个从NSURLConnection实现两个类方法的类,但不断收到错误:error:testSyncConnection(MyURLConnectionTest)failed:***-[NSProxydoesNotRecognizeSelector:sendSynchronousRequest:returningResponse:error:]called!这是MyURLConnection的接口(interface):@interfaceMyURLConnection:NSURLConnection+(void)sendAsynchronousRequest:(NSUR

ios - OCMArg checkWithBlock 因 EXC_BAD_ACCESS 而崩溃

我的测试是这样的://InsetUp:self.APIClientMock=OCMClassMock([APIClientclass]);OCMStub([self.APIClientMocksharedClient]).andReturn(self.APIClientMock);//Intestmethod:OCMVerify([self.APIClientMockPOST:@"invitations"parameters:[OCMArgcheckWithBlock:^BOOL(NSDictionary*parameters){//Someparameterscheckissuppo