使用OCUnit“嵌套”测试?

时间:2013-08-06 03:26:32

标签: ios objective-c ocunit

来自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

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

我了解setUptearDown方法;我试图在这里做的事情是将因子设置代码应用于,例如,该文件的20个测试中的5个,但对于其他15个测试是不必要的,甚至是有害的。

在为iOS构建时,OCUnit中的组织是否可行?我现在正在考虑的另一种方法是定义一些额外的设置方法,并亲自从相应的测试中调用它们。

2 个答案:

答案 0 :(得分:0)

我认为你的意思是OCUnit(我找不到任何叫做OCTest的东西)。如果是这种情况,那么您拥有从setUp继承的tearDownSenTestCase方法(OCUnit的基类)。

从这篇文章: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次。

答案 1 :(得分:0)

回过头来看,有几个Objective-C测试框架在OCUnit / XCTest之上,并提供了一个类似rspec的测试组织。 Specta是一个,Kiwi是另一个。 Kiwi包含了自己的嘲弄和期望支持,而Specta的期望被分解为一个名为Expecta的独立包。

我正在将Kiwi用于几个项目,并且它运作良好。