我在 XCode 中使用 SenTest 进行单元测试。我必须为我的单元测试运行一个命令行任务来进行测试。我可以在我的测试类(当然是 SenTestCase 的子类)的 +initialize 方法中做到这一点。
我想在测试完成后终止命令行任务。由于 +initialize 没有反义词,所以我很难过。
有什么方法可以将 SenTest 类子类化来做到这一点,我忽略了吗?
最佳答案
不要在 +initialize 中运行你的命令行工具。这是在类第一次发送任何消息时由 Objective-C 运行时发送的。
相反,在测试的 +setUp
中运行命令行工具。方法。 (请注意,我的意思确实是 +setUp
而不是 -setUp
;很多人似乎对类和实例方法之间的区别有点模糊。)
在这种情况下,一个 类(class) setUp
方法在 之前被 OCUnit 调用任何 中的测试 SenTestCase
子类被运行,一个 类(class) tearDown
OCUnit 在 之后调用方法全部 在 SenTestCase
中进行测试子类 ar 运行。
因此,特定 SenTestCase
的整体流量子类是:
+setUp
至 SomeTestCase
test
从 SomeTestCase
开始的方法(称之为 test___
)SomeTestCase
的新实例-setUp
给它-test___
给它-tearDown
给它+tearDown
至 SomeTestCase
如果您有任何事情需要在您的
-test
之前完成,请这样做。方法运行,或者在你所有的 -test
之后需要做的事情方法运行时,有一个确定性的点可以实现。 (而不是依赖于内存管理,这不是以相同的方式确定的,如果您使用 GC,则可能根本不是确定的。)
关于unit-testing - SenTestKit : cleaning up after ALL tests have run?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630339/