0

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

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

@interface ModelTest : SenTestCase

@end

模型测试.m

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

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

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

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

4

2 回答 2

2

非测试类很少依赖测试类;没有人会#include 你的 ModelTest 声明。因此,封装或公开测试方法并没有太多好处。无论如何,测试运行者都会看到它们。

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

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

于 2013-03-25T21:09:16.337 回答
1

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

在接口中放一些东西的唯一原因是让另一个类可以发现它。但是测试是通过反射找到的,而不是通过引用特定测试用例名称的代码。

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

于 2013-03-25T21:56:17.913 回答