1

来自 Rails/Rspec,我习惯于像这样管理测试:

setup { //stuff for all tests goes here }
tests for "foo" method
  setup { stuff specific to foo method here }
  test_foo_1 { ... }
  test_foo_2 { ... }
end
tests for "bar" method
  setup { // stuff specific to bar method here }
  test_bar_1
end

因此,文件中的所有测试都运行了一些设置,然后对于某些测试,还有仅适用于这些测试的附加设置。

我知道setUpandtearDown方法;我在这里尝试做的事情是排除适用于该文件的 20 个测试中的 5 个的设置代码,但对于其他 15 个测试是不必要的,甚至是有害的。

在为 iOS 构建时,在 OCUnit 中是否可能有这样的组织?我现在看到的另一种方法是定义一些额外的设置方法,并从适当的测试中自己手动调用它们。

4

2 回答 2

0

Circling back on this, there are a couple of Objective-C testing frameworks which layer on top of OCUnit/XCTest and provide an rspec-like test organization. Specta is one, Kiwi is another. Kiwi includes its own mocking and expectations support, whereas Specta has expectations factored out into a separate package called Expecta.

I'm using Kiwi for a couple of projects and it's working pretty well.

于 2014-01-01T19:40:29.430 回答
0

我假设您的意思是OCUnit(我找不到任何称为 OCTest 的东西)。如果是这种情况,您将拥有从(OCUnit 的基类)继承的setUptearDown方法。SenTestCase

从这篇文章: http: //meandmark.com/blog/2012/05/introduction-to-unit-testing-with-ocunit/

setUp:tearDown:方法_

可以帮助您进行单元测试的两种可选方法是setUp:tearDown:。如果在运行多个测试之前要执行初始化代码,则可以将该代码放在setUp:方法中以删除测试中的重复代码。该tearDown:方法包含清理代码。使用该tearDown:方法的一个常见情况是释放您在该方法中分配的任何内存setUp:

OCUnit在运行每个测试之前调用该setUp:方法,并在运行每个测试之后调用该tearDown:方法。如果您的单元测试类有 20 次测试、OCUnit调用setUp:tearDown:20 次。

于 2013-08-06T03:43:51.347 回答