Xcode 6在物理iOS设备上运行测试无法正常工作。

6
我在物理设备上运行单元测试目标时遇到了问题(在我的情况下是iOS 8.1的iPhone 6)。为此,我创建了一个全新的iOS Xcode项目,打开并使用Cmd + U(Product -> Test)运行测试。应用程序编译成功并要求我输入我的代码签名凭据。应用程序甚至在设备上打开了。到这里一切正常。
但是测试从未运行,Xcode在“测试”中卡了几分钟,最后退出,并显示以下消息:
*** Canceling tests due to timeout in Waiting for test process to check in...

控制台会抛出一些代码签名错误或类似的错误:

2014-10-30 08:54:12.585 Test[4721:1298810] Error loading /private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests: 

dlopen(/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests, 262): no suitable image found.
Did find: /private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests: 

code signature invalid for '/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests'
DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest'

我真的不明白,这个应用程序已经正确签名了,但我猜测注入的测试库没有签名。

有人知道如何解决吗?或者这是否意味着我们只能在模拟器中进行测试?

我一直在测试的项目可在我的GitHub上找到:https://github.com/Legoless/StackOverflow/tree/master/Objective-C/TestTargetFailure

谢谢。


执行了2个测试,0个失败(0个意外),用时0.356(0.378)秒。这是我运行它得到的结果。尝试清理项目或删除文件夹。 - gabbler
这个项目是从零开始创建的,所以它非常干净。仍然遇到问题。 :( - Legoless
我也复现了这个问题。我从头开始创建了一个项目(单视图),默认测试无法在设备上运行,但在模拟器上可以正常运行。我没有收到代码签名错误,而是收到了这个错误:DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Containers/Data/Application/4CF4CAA8-281B-41D0-8E13-5F0DA7C451C0/tmp/SampleAppTests.xctest' - Murray Sagal
我也遇到了同样的问题。我已经提交了一个错误报告,请你也这样做。 - David Pettigrew
1个回答

2

这是一个代码签名问题。

解决方法:进入测试目标的构建设置,确保已设置正确的(与您的测试目标的Bundle ID匹配)配置文件和代码签名身份。您可以为此生成一个通配符配置文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接