2012-09-22 158 views
4

经过一些严重的挫折和头痛之后,我设法将单元测试添加到现有项目。问题是,测试只能在50%的时间内执行。我有一个测试方法,里面有一个STFail宏,当我运行测试时,它会按我的预期失败。然后,我再次运行测试,而不触及任何代码/设置,并且它会通过测试夹具中的断点。发生这种情况时,控制台输出此输出:单元测试失败,然后不要

无法找到位于... octest的测试包的可执行文件。

我有一个谷歌,但似乎并不多/这个确切的问题,关于这个问题的讨论,其他任何人会在我的头上。如果有人能够解释这个问题,那将非常感激。

谢谢。

+0

我不认为这个问题将无法解决没有一个可重复的例子。你可以从你的单元测试中删除多余的代码,获得它,以便发生同样的问题,并发布代码? –

+0

嗨大卫。真的没有太多要发布。在这个阶段,它是一个SenTestCase类的空子类,带有一个方法和一个STFail宏。我甚至还没有开始把它连接到应用程序代码。我可以尝试删除应用程序代码并上传项目文件(如果可能的话),如果这有什么用处的话? – Gravedigga

+0

如果它足够小,您可以(也应该)将它放在帖子中(使用'{}'按钮缩进每行四个字符)。但是,如果你能把它弄到像<100行的东西。这样,如果由于某些设置错误而导致失败,人们将能够看到并告诉你 –

回答

3

我把你的新项目和转载问题。有许多的问题,以及一个未知:

测试目标的构建阶段:

  • 目标相关性:指定TestApp,使主要目标总是先建。
  • 编译来源:不包括任何主要来源。只包含TestAppUnitTests.mm
  • Link Binary With Libraries:唯一需要的是SenTestingKit.framework。我们可以投入Foundation和UIKit以获得更好的效果。
  • 复制包资源:应该没有。 (稍后,您可能需要特定的测试资源。)测试目标

构建设置:

  • 捆绑装载机应$(BUILT_PRODUCTS_DIR)/TestApp.app/TestApp
  • 测试主机应$(BUNDLE_LOADER)

主要目标方案:

  • 测试 - >信息应指定测试目标

但是即使我做的所有这些改变,你的项目仍然有异常行为。模拟器有时会获取名为的应用程序版本,字面上为$ {PRODUCT_NAME}。即使调试应用程序有时也会在日志导航器中显示“Debug $ {EXECUTABLE_NAME}”。所以别的东西是错误的,我不知道是什么。

最好的解决方案是从头创建一个新项目,指定“包含单元测试”。我已经验证了这一点。

+0

好的,感谢指针乔恩。听起来像创建一个新项目可能会更容易。还是要谢谢你的帮助。 – Gravedigga

+0

当我在我的Xcode项目中重构目标名称时,Cocoapods搞砸了。这帮助我解决了测试目标。谢谢! – Hlung

+0

关于软件包设置和测试主机,您应该看到: * build/debug-iphoneos/AppName.app/AppName * 这是一个有效的路径。 – OhadM