是否有标准方法来指示这些测试用例应仅在特定的iOS版本上运行?
我想到的一个选择:
- (voID) testSomethingThatOnlyWorksOniOS7{ const BOol iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1; if (!iOS7OrHigher) return; // Actual test goes here}
或者,我可以告诉SenTestCase动态跳过某些测试吗?
解决方法 你的方法对我来说似乎很好.一般来说,我认为没有像“标准方式”那样有选择地执行基于iOS版本的单元测试.
一方面,根据iOS版本,您的方法可以选择性地或以不同方式实现一个功能.可能你已经知道关于CocoaWithlove:Tips and Tricks from conditional…的这个讨论.它已经很老了,但是这里描述的方法仍然保持不变.
你没有指定单元测试的执行方式,但处理这个问题的真正酷的方法是IMO,它能够指定在实现之外执行哪些测试,以便你说明哪些只适用于iOS7和不要污染你的测试实现.
这可以通过例如与每个测试相关联的版本号来完成;在调用单元测试实现之前,请检查函数调用中的版本号,例如testSomethingThatOnlyWorksOniOS7.
编辑:
实际上,事情可能比我想到的更容易.现在我有点Hacky ……
您可以在OCUnit中修改实际测试方法调用的位置(不知道这个,对不起,但我不认为应该很难找到…)以便它检查选择器名称:您转换将选择器名称转换为字符串(NsstringFromSelector),如果它匹配某个正则表达式,则需要一些特定的分支(在您的情况下,这将忽略该测试).
如果您担心修改OCUnit,这可能不合理,我上面所说的可以通过方法调配来完成:只有当选择器名称与您的表达式不匹配时,才调用原始实现,否则什么都不做.
总结以上是内存溢出为你收集整理的基于iOS版本的条件单元测试全部内容,希望文章能够帮你解决基于iOS版本的条件单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)