断言应保留在测试版本中

时间:2013-10-23 14:02:07

标签: java javascript php c++

在开发过程中使用断言的主题在SO上被广泛涵盖。代码有三个条件:

1) Development
2) Testing
3) Production

断言存在于开发版本中,并从生产版本中删除。但是我发现任何东西都说它们应该保留还是在测试版中删除? 有什么想法吗?

3 个答案:

答案 0 :(得分:3)

意见:如果你打破了测试:

  • 功能测试(声明保留)
  • 单元/集成/系统测试(声明仍然存在)
  • 发布/验收测试(无断言;您测试生产就绪代码)

答案 1 :(得分:2)

我从不写assert。相反,我会针对真实的生产代码进行单元测试和集成测试等。

我不喜欢使用assert,因为他们检测问题的能力有限,而且我对非预期的副作用感到偏执。

我非常不喜欢在代码中有条件,根据构建标志(例如Development vs Production)编译某些内容。这些条件只会使代码复杂化,并且他们必须做到这一点,以便您 test 的代码与 production 中的代码不同。

我个人认为,应该在实际业务模块中编写的唯一代码是生产级代码,所有测试都应该针对该代码完成。出于测试目的,不应对业务模型进行任何更改。也就是说,如果你想测试某些内容,请将其设为public并为其编写外部测试。

答案 2 :(得分:0)

如果您正在使用.NET开发任何东西,如MFC或C#,那么ASSERTS将不会包含在Release版本中,您无需进行任何修改。如果有任何错误浮出水面(将会;),请将它们留给更好的调试。至于JS和PHP,我会说日志更好,因为弹出开发人员消息的断言或警告看起来真的很糟糕和令人费解。

P.S>所有观点都是个人的