您是否需要在OCUnit的测试用例类中的公共接口中定义测试方法

时间:2013-03-25 20:02:31

标签: ios objective-c ocunit

使用OCUnit编写单元测试时,可以在公共接口(.h)中省略测试方法定义。但OCUnit关于公共接口中测试方法定义的最佳实践是什么?

ModelTest.h(未定义测试方法)

@interface ModelTest : SenTestCase

@end

ModelTest.m

@implementation ModelTest : SenTestCase
    - (void) testCreation {
        ...
    }
@end

ModelTest.h(带有测试方法定义)

@interface ModelTest : SenTestCase
    - (void) testCreation;
@end

我个人认为最好在公共接口中反映一个公共测试方法定义。但最佳做法是什么?是否存在我们无法避免在公共接口中声明这些方法的情况?

2 个答案:

答案 0 :(得分:2)

非测试类很少依赖于测试类;没有人会#include你的ModelTest声明。因此,从封装或暴露测试方法中获得的内容并不多。无论如何,测试运动员都会看到它们。

如果要从标头生成文档,则在.h文件中声明它们可能很有用。

有时,您可以定义SenTestCase的子类,为您的测试添加特殊的辅助方法。如果这样做,您可能不希望在超类上公开测试方法。但是,最好从超类中完全删除测试用例,将超类视为只包含辅助方法的抽象接口。

答案 1 :(得分:1)

我不使用单独的.h和.m进行OCUnit测试;一切都进入.m

在界面中添加内容的唯一原因是另一个类可以发现它。但是通过反射找到测试,而不是通过引用测试用例的特定名称的代码。

请参阅https://qualitycoding.org/unit-test-template/了解我使用的模板以及原因。