SenTestKit:在所有测试运行后清理?

Mel*_*Mel 11 xcode unit-testing ocunit

我在XCode中使用SenTest进行单元测试.我必须为我的单元测试运行一个命令行任务来测试.我可以在我的测试类的+ initialize方法中做到这一点(当然是SenTestCase的子类).

我想在测试完成后终止命令行任务.由于没有+初始化的反面,我很难过.

是否有某种方法可以将SenTest类子类化为可以忽略的?

Chr*_*son 36

不要在+ initialize中运行命令行工具.当类首次发送任何消息时,由Objective-C运行时发送.

而是在测试+setUp方法中运行命令行工具.(请注意,我真的是说+setUp,不-setUp.很多人似乎是对类和实例方法之间的区别有点模糊)

在这种情况下,一 setUp方法是由之前的OCUnit援引任何的一个测试SenTestCase子类的运行和 tearDown方法是通过的OCUnit后调用所有的测试SenTestCase子类AR运行.

因此,特定SenTestCase子类的总体流程为:

  • 发送+setUpSomeTestCase
  • 对于每个test开始的方法SomeTestCase(调用它test___)
    • 创建一个新的实例 SomeTestCase
    • 发送-setUp给它
    • 发送-test___给它
    • 发送-tearDown给它
    • 释放它
  • 发送+tearDownSomeTestCase

这样,如果您在-test运行任何方法之前需要执行某些操作,或者在所有-test方法运行之后需要执行某些操作,那么就可以确定性地指出这一点.(而不是依赖于内存管理,它不是以同样的方式确定性的,如果你使用GC,它可能根本不是确定性的.)

  • 我没有找到任何谈论+ setUp/+拆解方法的内容.谢谢你的启示. (2认同)