在Xcode 3.2中的SenTestCase和XCBuildLogCommandInvocationSection错误问题

5
我有一组SenTestCase在XCode 3.2.4中引起了问题。 尝试编译(使用一个非常基本的STFail(@“”);),会出现以下编译器错误:
- 在处理命令输出时发生内部错误:- [XCBuildLogCommandInvocationSectionRecorder endMarker]: 向实例发送了未识别的选择器
- 在处理命令输出时发生内部错误:- [XCBuildLogCommandInvocationSection setTestsPassedString:]: 向实例发送了未识别的选择器
我已经从“/ Developer / Library / Frameworks”中包含了SenTestkingKit.framework,只是通过“Targets> Add> New Target> Cocoa Touch> Unit Test Bundle”创建了我的目标。 有什么想法吗? 谢谢!
4个回答

21

看起来是某些报告代码没有考虑时区问题的回归。输出标记为在开始之前结束,因此变得非常混乱并且出错。

一个解决方法,我在Google上找到的某个地方,是更改目标的Run Script阶段。

更改为:

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out 

它是通过绕过问题而不是解决问题来实现的,但确实有效。


嘿,安迪。谢谢你的提示!如果重定向STOUT,它是否仍会报告错误? - Kevin Sylvestre
据我所知,是的。它只是不能像运行时那样进行嵌套测试,并将所有内容都转储到构建窗口中。 - creednmd
我的目标没有运行脚本,因此安迪指定的第一行不存在。我正在通过展开目标并再次展开目标中的项目名称来寻找运行脚本。这是查找的正确位置吗? - thebossman
@thebossman 如果您在目标中右键单击项目名称,则会出现添加->新建构建阶段->新建运行脚本构建阶段的选项。因此,是正确的位置,但您可能需要添加运行脚本本身。 - creednmd

4

在开发iPad应用时,我也遇到了同样的问题。尝试将测试目标的基础SDK从iPhone设备3.2更改为iPhone设备4.0。


谢谢你的提示!我之前使用的是4.1版本,切换到4.0版本解决了问题。非常感谢! - Kevin Sylvestre
1
更改基础SDK解决了我的问题,使用XCode 3.2.3 / SDK 4.0。我更改了测试的单独目标以构建测试,或者更改了依赖于测试的主应用程序目标以构建应用程序。IiPhone Device 4.0和iPhone Simulator 4.0都可以工作。或者更改项目设置(user456331)对两者都有效。除了将SDK设置为4.0之外,还应将iPhone OS部署目标设置为您想要向后兼容的版本。 - Sly Gryphon

2

我也遇到了使用xcode 3.2.3和iPad时的同样问题。以下方法帮助我解决了这个问题:

Project -> Edit Project Settings -> Build -> Base SDK = iPhone Device 4.0
Project -> Edit Project Settings -> Build -> iPhone OS Deployment Target = iPhone OS 3.2

-1

这个问题似乎在4.2 SDK中已经被修复了(终于!)。


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