Tag: unit testing

如何unit testingNSCoding?

我有一个iOS应用程序,数据持久使用NSCoding,更确切地说是NSKeyedArchiver。 此应用程序已经在App Store上提供。 我正在处理应用程序的版本2,数据模型应该改变。 所以我需要处理数据模型迁移。 我希望它通过unit testing覆盖。 在我的testing中,我想用旧的数据模型dynamic生成持久数据,启动迁移,看看是否一切顺利。 目前,归档对象如下所示: MyDataModelObject *object = …. NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:object forKey:key]; [archiver finishEncoding]; 问题是,MyDataModelObject可能被重新考虑,甚至在应用程序的版本2中被删除。 所以我不能在testing中使用这个类来生成一个“旧版本档案”。 有没有一种方法来模拟不使用这个类的类的encodeWithCoder:方法做了什么? 我想达到的是以下几点 – testMigrationFrom_v1_to_v2 { // simulate an archive with v1 data model // I want this part of the code to be as simple as possible // I […]

Xcode 5.1打破了一些testing

由于更新到Xcode 5.1,我试图运行unit testing(XCTestSuite)时遇到了错误。 当我运行单独的testing方法时,在控制台上Error while reading test scope bundle时出现Error while reading test scope bundle并且没有结果。 当我运行testing文件的完整实现时,我看到: Unable to get entitlements for client task. Error: Error Domain=NSPOSIXErrorDomain Code=-1 "The operation couldn't be completed. (POSIX error -1 – Unknown error: -1)" 然后testing似乎开始按预期运行。

Xcodetesting目标与主机应用程序强制错误的目标到scheme的构build部分

当我添加一个需要主机应用程序的testing目标,以运行Xcode添加与我添加的应用程序无关的目标。 我有两个scheme(内部和生产)。 我想在我们的内部应用程序上运行testing。 当我将内部应用程序添加为主机时,我最终会添加生成目标,并且无法删除它。 如果我删除主机应用程序,这将消失,但testing也失败。 有谁知道我要去哪里错了?

OCMocktesting失败 – 预期的方法没有被调用

INtesting类 -(void)testMyTest { MasterViewController* masterVC = [[MasterViewController alloc]init];//[OCMockObject mockForClass:[MasterViewController class]]; id master = [OCMockObject mockForClass:[DetailViewController class]]; [[master expect] getStringVal:@"PARAM"]; [masterVC doSomething]; [master verify]; } 在detailViewController中 -(NSString*)getStringVal:(NSString*)param { NSString *returnParam = [NSString stringWithFormat:@"%@-String",param]; return returnParam; } 在主视图控制器 -(void)doSomething { DetailViewController *detail = [[DetailViewController alloc]init]; [detail getStringVal:@"PARAM"]; NSString * returnVal = [detail getStringVal:@"PARAM2"]; NSLog(@"returnVal %@",returnVal); NSLog(@"doSomething"); } […]

iOSunit testing运行失败

在我的应用程序中,我按照以下方式执行unit testing: .h文件: @interface MyAppTests : SenTestCase { SMAppDelegate* _appDelegate; SMMenuViewController* _menuViewController; UIView* _mainView; } .m文件 – (void)setUp { [super setUp]; _appDelegate = [[UIApplication sharedApplication]delegate]; _menuViewController = [[SMMenuViewController alloc]init]; _mainView = [_menuViewController view]; // to force the view to load } – (void)tearDown { // Tear-down code here. _mainView = nil; _menuViewController = nil; _appDelegate […]

在unit testing中检查传入函数的参数值

我正在用OCMock v3做unit testing,我想testing下面这段代码: @implementation School -(void) handleStudent:(Student*) student{ Bool result = [self checkIdentityWithName:student.name age:student.age]; … } … @end 在我的下面的testing案例中,我创build了名为“John”的student实例,年龄为23岁,然后运行testing的函数: -(void) testHandleStudent{ Student *student = [Student initWithName:@"John" age:23]; // function under test [schoolPartialMock handleStudent:student]; // I want to not only verify checkIdentityWithName:age: get called, // but also check the exact argument is passed in. that's John […]

通过使用XCTestExpectationunit testingasynchronous函数,但它不会等待我设置的秒

我有一个inheritanceNSThread的MyService类: 标题: @interface MyService : NSThread { -(void) startMe; -(void) doTask; … } 执行: @implementation MyService -(void)startMe { [self start]; } -(void) doTask { [self performSelector:@selector(checkData:) onThread:self withObject:nil waitUntilDone:YES]; } -(void) checkData { … // NOTE: dataChecked is an instance variable. dataChecked = YES; } @end 我想unit testing上面的-(void)doTask并validation-(void)checkData真的被调用。 我使用OCMock库来部分模拟MyService 。 受到本教程(使用XCTestExpectation)的启发,我尝试了以下方法: -(void) testCheckData { // […]

iOS项目的unit testing

对于iOS开发,我还比较陌生,对于任何不能编译,运行和检查的问题,对于任何一种testing都是绝对陌生的。 这显然是任何开发人员简介中的一个弱点,我决定现在就开始使用有趣的,真正的项目。 在寻求尽可能快(尽可能)地从0到100的最好方法的时候,我会到专业社区去获得您的反馈。 与此同时,我正在寻求提示,我也正在进入亚马逊寻找关于这个问题的良好评论的书籍,谷歌获得其余的。 我只是来这里收集那些愿意花一分钟时间的人的反馈,所以我可能会用一个很好的build议来打大奖,并且更好地规划我的学习策略。

testingGoogle Analytics iOS SDK

有没有人find在iOS上testingGoogle Analytics的好方法? SDK非常简单,但文档不讨论如何testing或validation。 在模拟器上或者在运行debugging版本configuration时,库的行为是否不同? 我用这个委托方法设置一个委托GANTrackerDelegate: – (void)trackerDispatchDidComplete:(GANTracker *)tracker eventsDispatched:(NSUInteger)eventsDispatched eventsFailedDispatch:(NSUInteger)eventsFailedDispatch; 这个方法被调用得很好,我在eventsDispatched和eventsFailedDispatch中看到了积极的值。除此之外,还有一种方法可以testing这些事件是否被正确接收,并与我认为正在提交的内容相关联? 我想我需要设置一个专门的GA网站configuration文件进行testing。 运行一组固定的UI自动化unit testing,然后等待24小时,使数据可用并“手动”validation。 伊克。

Grand Central调度和unit testing

我已经写了一个简单的testing用例,遵循苹果的文档 ,我没有看到我期待的结果。 代码如下: – (void)testExample2 { NSLog(@"1"); dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"3"); dispatch_semaphore_signal(semaphore); }); NSLog(@"2"); dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); NSLog(@"4"); dispatch_release(semaphore); } 我希望阅读:1,2,3,4,而是我的控制台只显示我1,3。 我已经能够在一个while循环中使用DISPATCH_TIME_NOW和NSLoop hack一起解决这个问题,但是上面的代码应该是一种工作…对吧? 干杯… UPDATE 我只是意识到,我应该使用一个单独的队列,而不是dispatch_main_queue()