【问题标题】:Do you need to define test methods in the public interface in OCUnit's test case classOCUnit的测试用例类中是否需要在公共接口中定义测试方法
【发布时间】:2013-03-25 20:02:31
【问题描述】:

使用 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

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

【问题讨论】:

    标签: ios objective-c ocunit


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 感谢完全不使用 .h 文件进行单元测试很有趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2012-10-19
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多