基于iOS版本的条件单元测试

基于iOS版本的条件单元测试,第1张

概述我的单元测试套件包含一些仅适用于最新iOS版本的测试用例.预计,在较旧的iOS版本上运行套件时,这些测试会失败. 是否有标准方法来指示这些测试用例应仅在特定的iOS版本上运行? 我想到的一个选择: - (void) testSomethingThatOnlyWorksOniOS7{ const BOOL iOS7OrHigher = floor(NSFoundationVersionNu 我的单元测试套件包含一些仅适用于最新iOS版本的测试用例.预计,在较旧的iOS版本上运行套件时,这些测试会失败.

是否有标准方法来指示这些测试用例应仅在特定的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版本的条件单元测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1106676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存