目标
我们的目标是在持续集成环境 ( Jenkins )中执行我们的单元测试
(我认为每个问题都必须说明一个人想要达到的目标。也许这个问题实际上可以用一种非常不同的方式来解决)
更新:更多关于“你为什么要这样做?”
首先,我们谈论的是特定的、自主开发的硬件。而且我希望持续集成测试告诉我是否有人在不告诉所有开发人员的情况下更改了盒子的行为(是的,是的,我知道,这样的事情永远不会发生......)
其次,我们的一些(不是全部)连接使用默认无效的证书,因此我们有代码来检查证书的有效性(SecTrustEvaluate
等)。当然,理想情况下,我们的测试也会测试该代码。但这似乎太多了。
第三:好吧,如果我能得到真正的交易,我为什么要嘲笑任何东西?IDE对此没有问题,为什么要命令行。
如果我想要可预测性,我会YES
在所有测试中返回;)(我已经看到人们这样做了)。不,我想知道代码是否真的和真的适用于我们的设备。这是某种变态的欲望吗?
问题到此解决
从命令行运行测试听起来很简单,但是
xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO clean test
导致一个丑陋的错误:
unsupported build action 'test'
所以我在网上搜索并找到了这篇关于从命令行运行 OCUnit 测试的文章。
我遵循了所有步骤,我可以像这样从命令行运行我的测试:
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
由于“此服务器的证书无效”,测试失败。错误。
任何指针?
- 我做错了吗?
- 这是一个真正的错误吗?
- 如果是这样,是否有解决方法?
任何输入表示赞赏!