【问题标题】:xcode 4.3 unit testsxcode 4.3 单元测试
【发布时间】:2012-06-12 15:45:05
【问题描述】:

我是 xcode 和 Objective-c 的新手。我还决定在我的项目中添加单元(逻辑)测试。测试工作正常(使用 OCUnit 和 SenTestingKit)。我不明白build for testing 是如何工作的。让我解释一下..

我编写了一个简单的单元测试来检查一个空数组 - 使用

STAssertTrue([array count] ==0, @"Should have an empty array, but it is not");

这构建得很好并且测试通过了。

现在,如果我将其从 0 更改为 1,则构建失败。为什么构建失败对我来说没有意义 - 代码没有任何错误。在我看来,构建实际上正在运行代码并且断言正在断言。

如果方法要返回一个包含一个元素的数组,如何通过代码一步来确定方法中的问题?在这个简单的例子中问题很明显,但如果要测试的方法更深入,则需要逐步解决问题。像这样运行单元测试似乎不太容易使用——除非我完全遗漏了一些东西。

我的问题是:如何逐步完成失败的单元测试?

【问题讨论】:

  • 您能否更明确地说明您采取的步骤?我不清楚问题是什么。似乎您是在说如果您的单元测试失败,您的构建就会失败?不应该是这样,我只是验证了它不在我自己的项目中。
  • 我的某些设置可能不正确,希望在这里找到解决问题的帮助。问题是,如果单元测试工作正常并且构建成功,如果像 STAssertEqual (x == 2) 中那样更改简单的东西,为什么构建会失败; // 其中 x 是 3。它仍然应该毫无问题地构建,并且开发人员应该能够单步执行代码并查看 x 为 3 的原因并解决问题,但事实并非如此。因此,当有更复杂的代码时,构建会失败,并且无法执行和单步执行代码。难道我做错了什么?我的期望落空了吗?
  • 发布一个其他人可以打开的示例项目可能会对您有所帮助,或者为其他人提供具体说明以便能够轻松地重新创建演示项目。
  • 这里是压缩项目的链接dropbox.com/sh/9efnu5ba877cp7l/woH1svNog4
  • 谢谢,但你可能想把它记下来。您是否希望整个互联网都查看您的所有源代码?无论如何,如果您从头开始创建一个新项目来展示您的问题,这对您和我都会更有帮助。也就是说,我注意到您为您的项目打开了“构建后测试”设置。这可能是问题吗?如果是这样,我会更新我的答案。

标签: unit-testing xcode4.3 sentestingkit


【解决方案1】:

如果您不希望损坏的测试导致构建失败,则需要在项目中关闭 Test After Build 设置。如果将来您的构建由于您的测试而失败,您可以通过执行它们(产品 -> 测试)并设置断点来调试您的测试用例,就像调试任何其他代码一样。 Xcode 并非总是如此,但正如您所说,您正在使用 4.3。

您还问“为测试而构建”是什么意思。这个问题涉及到同样的问题:Xcode 4 terms "Build for testing / Build for running / build for profiling / build for archiving"

【讨论】:

  • 设置断点没有帮助 - 代码没有被执行,因此断点不会被命中。如果它构建,我可以运行测试并点击断点。
  • 已更新答案以反映在 cmets 中得出的结论。
猜你喜欢
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 2011-07-31
  • 1970-01-01
  • 2010-09-07
  • 2012-04-09
  • 2011-05-22
相关资源
最近更新 更多