小编Mat*_* S.的帖子

将Xcode 5中的单个XCTest单元测试用例定位到适用于通用应用程序的特定iOS设备?

我正在构建一个通用的iPhone/iPad应用程序,在某些情况下UI会有很大的不同(例如在iPhone上我们使用带有TableView的Master/Detail范例,而在iPad上我们使用带有包含细节的单元格的CollectionView) .

因为接口是如此不同,它改变了构建视图控制器的单元测试的方式.在集合视图中,我们必须进行测试以确保单元格正确构建并包含所有详细信息,而在iPhone上我们需要两组测试 - 一个用于主列表,一个用于详细信息屏幕.

所以我的问题是,在使用Xcode 5和XCTest框架构建的通用应用程序中,您是否可以将单个单元测试用例/类定位到特定物理设备上运行?

我在这里遇到了一个类似的问题 - iOS单元测试通用应用程序 - 但提问者有不同的意图,并使用旧技术.

我也看到了对UserInterfaceIdiom的各个测试函数进行检查的建议,但这看起来很粗糙.理想情况下,会有一个注释指定在特定设备上运行的特定测试,或者能够为特定设备指定整个测试类.

提前感谢您的建议.

- 编辑 -

@TommieC引导我走下似乎适当的路径,如果是一个微薄的手册.我创建了两个新的测试特定方案,一个用于手机大小的设备,另一个用于平板电脑大小的设备.在这些方案中,我编辑了测试部分,并在核心测试中添加了特定于设备的测试.

然后我让jenkins执行两个构建步骤,针对相应的设备来测试特定的方案.这种方法的缺点是两个构建步骤.但是,我计划将jenkins作业拆分并在2个从站上运行,并将相应的设备连接到每个从站以并行化测试.

AFAIK这也将是Xcode Build Services友好的,因为它也基于项目中的方案工作.这真的太糟糕了,XCTest没有更优雅的内置,考虑到在新的设备类型发挥作用(手表/电视/吹风机等)的情况下,这不会非常好地扩展.

iphone xcode unit-testing ios xcode5

14
推荐指数
1
解决办法
4530
查看次数

引用块中的iOS应用程序委托是否会创建委托对象的副本?

请考虑以下示例:

- (void)exampleFunction
{
  AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  SomeClass *classObject = [[SomeClass alloc] init];
  [classObject someFunctionThatDoesBackgroundWorkAndCallsACompletionBlock:^(NSDictionary *results) {
    SomeNeatObject *object = appDelegate.someNeatObject;
    [object doSomeNeatStuff:results];
  }];
}
Run Code Online (Sandbox Code Playgroud)

假设在主/ UI线程上执行完成块以避免额外的疯狂,这是我不确定的:

  1. appDelegate变量是否被复制到堆栈中,按照常规块规则引用块内的变量?
  2. 如果是#1,这是一个好/安全的做法吗?我可以看到这可能会导致问题,如果你在随后调度到GCD队列的块中执行此操作,因为.someNeatObject可能已更改状态/变为nil?

我意识到appDelegate不应该被过度使用,但如果你使用Apple的模板来初始化Core Data堆栈(至少在iOS上),它可以保存有关应用程序当前状态的信息,例如Core Data相关对象.项目).那个特殊情况(核心数据)让我担心这个堆栈不是线程安全的,也不是复制它的好主意.

提前致谢.

macos objective-c ios

8
推荐指数
1
解决办法
856
查看次数

iOS Cloud Endpoints发现文档在iOS上的更改/演变支持?

我正在实施Google Cloud Endpoints API的iOS客户端,并希望了解如何在iOS内部解释Cloud Endpoints发现文档,因此当我在Cloud Endpoints端进行更改时(添加字段,更改字段名称) ,删除字段)老客户会发生什么?

我知道Cloud Endpoints为Javascript/AngularJS方面公开了一个REST JSON API,我们可以通过iOS上的AFNetworking手动绑定这些内容.我熟悉如何在该场景中管理客户端上的API更改,但如果使用Toolkit SDK/RPC实现是有意义的,那么我宁愿这样做.

这都是通过API版本化来处理的吗?那么老客户会要求使用旧版本的API吗?那么Google iOS SDK是否支持语义版本控制?如果没有,我可以看到版本号快速失控.

注意这是GCE的python版本.

python google-app-engine ios google-cloud-endpoints

5
推荐指数
1
解决办法
139
查看次数