我正在构建一个通用的iPhone/iPad应用程序,并且在某些情况下UI显着不同(即,在iPhone上,我们使用TableViews的Master/Detail范例,而在iPad上,我们使用的是包含细节)。将Xcode 5中的单个XCTest单元测试用例针对通用应用程序的特定iOS设备?
由于界面如此不同,它会改变视图控制器单元测试的构造方式。在集合视图中,我们必须测试以确保单元格构建正确并包含所有详细信息,而在iPhone上,我们需要两组测试 - 一个用于主列表,另一个用于详细信息屏幕。
所以我的问题是,在一个通用应用程序正在使用Xcode 5与XCTest框架构建,你可以针对个别单元测试用例/类在特定的物理设备上运行?
我在这里遇到了类似的问题 - iOS Unit testing universal application - 但提问者有不同的意图,并使用旧技术。
我也看到了建议做个别测试功能检查UserInterfaceIdiom但这似乎很粗糙。理想情况下,会有一个注释来指定在特定设备上运行的特定测试,或者能够为特定设备指定整个测试类。
在此先感谢您的建议。
- 编辑 -
@TommieC我走上什么似乎是适当的路径,如果微幅下挫手册。我创建了两个新的测试特定方案,一个用于手机大小的设备,另一个用于平板电脑大小的设备。在这些方案中,我编辑了测试部分,并在设备特定的测试中加入了核心测试。
然后我让詹金斯执行两个构建步骤,针对相应的设备测试特定的方案。这种方法的缺点是两个构建步骤。不过,我打算将jenkins作业拆分并在两个从属设备上运行,并在每台设备上连接适当的设备以并行化测试。
AFAIK这也将是Xcode构建服务友好,因为它的工作原理也是基于项目中的方案。这真的太糟糕了,没有什么更优雅的内置到XCTest这个,考虑到这种情况在新的设备类型发挥作用的情况下不能很好地扩展(手表/电视/吹风机等)
如果你反对'UserInterfaceIdiom'你有没有考虑拆分iPad/iPhone的独立测试到他们自己的测试类,并设立另一个目标是什么?这样的iPhone目标,你可以排除iPad的测试。 – squarefrog
如果是唯一的解决方案,我并不反对使用它。虽然分割测试用例应该可以在文件级进行测试,但这种做法有点丑陋....再加上在我看来,在单元测试中引用用户界面时感觉不对劲:) –
这是一个公平的评论。说实话,我在单元测试中唯一使用'UserInterfaceIdiom'的方法是根据习惯用法来确定要加载哪个Storyboard。 – squarefrog