我们的目标是在持续集成环境(Jenkins)中执行单元测试
(我认为每一个问题都必须说明究竟究竟要实现什么,也许问题实际上可以通过一种非常不同的方式解决)
更新:更多关于“你为什么要这样做?
首先,我们正在谈论具体的,自行开发的硬件.而且我想持续一体化测试告诉我,如果有人改变了框的行为,而不告诉所有的开发者(是的,是的,我知道,这样的事情永远不会发生…)
其次,有些(并非所有)连接使用默认无效的证书,所以我们有代码来检查证书的有效性(SecTrustEvaluate等).理想情况下,我们的测试也将测试该代码.但这似乎太多了.
第三:那么,为什么我可以用真实的交易来嘲笑什么呢? IDE没有问题,为什么要命令行.
如果我想要可预测性,我会在所有的测试中返回YES;)(我已经看到人们这样做).不,我想知道代码是否真的适用于我们的设备.这是一种变态欲望吗?
到目前为止已解决问题
从命令行运行测试听起来很直观,但是
xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO clean test
导致一个丑陋的错误:
unsupported build action 'test'
所以我在网上搜了一下,发现这篇文章是在Running OCUnit Tests from Command Line.
我遵循所有步骤,我可以从命令行运行我的测试:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
剩下的问题
但是,现在,任何与SSL服务器的NSURLConnection都将失败,因为“此服务器的证书无效”.从命令行运行测试时,我已经听说过钥匙串问题了,但这可以吗?任何SSL连接被拒绝?
重现
在https://github.com/below/SSLTestDemo获取样品.打开它,并使用Xcode自己的Test⌘U命令运行样品测试.测试应该成功
现在在命令行运行测试:
xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
由于“该服务器的证书无效”,测试失败.错误.
任何指针?
我做错了吗?
这是一个真正的错误吗?
>如果是,有没有工作?
任何输入是赞赏!
解决方法
因为在你的应用程序中阻止这种检查的代码是危险的 – 毕竟,它在运输之前可能不会被删除 – 你必须设置环境变量和编译器标志来激活它…
Post Scriptum:
苹果认为这是一个bug,rdar:// problem / 10406441