gpt4 book ai didi

ios - 从命令行运行单元测试时的 SSL 连接问题

转载 作者:技术小花猫 更新时间:2023-10-29 10:18:06 26 4
gpt4 key购买 nike

目标

我们的目标是在持续集成环境中执行单元测试 (Jenkins)

(我相信每个问题都必须说明一个人到底想达到什么目的。也许这个问题实际上可以用一种非常不同的方式来解决)

更新:更多关于“你为什么要这样做?”

首先,我们谈论的是特定的、自主开发的硬件。而且我希望持续集成测试能够告诉我是否有人在不通知所有开发人员的情况下更改了盒子的行为(是的,是的,我知道,这样的事情永远不会发生……)

其次,我们的一些(不是全部)连接使用默认情况下无效的证书,因此我们有代码来检查证书的有效性(SecTrustEvaluate 等)。当然,理想情况下,我们的测试也会测试该代码。但这似乎要求太高了。

第三:好吧,如果我能得到真正的交易,我为什么要 mock 任何东西? 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 都将失败,因为“该服务器的证书无效。”。从命令行运行测试时,我听说过钥匙串(keychain)问题,但这是真的吗?任何 SSL 连接被拒绝?

重现

https://github.com/below/SSLTestDemo 获取 sample .打开它,然后使用 Xcode 自己的 Test ⌘U 命令运行示例测试。测试应该会成功。

现在在命令行上运行测试:

xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build

由于“此服务器的证书无效”,测试失败。错误。

任何指示?

  • 我做错了吗?
  • 这是一个真正的错误吗?
  • 如果是,是否有解决方法?

欢迎任何意见!

最佳答案

好吧,当我们在 Jenkins 下进行测试时,我最终根本没有检查证书。

因为在您的应用程序中使用阻止此类检查的代码是危险的——毕竟,它可能不会在您发布之前被删除——您必须同时设置环境变量和编译器标志来激活它……

后记:

Apple 认为这是一个错误,rdar://problem/10406441

关于ios - 从命令行运行单元测试时的 SSL 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com