生产发布代码中的单元测试?

时间:2009-08-14 16:26:55

标签: unit-testing agile production-environment

几个问题:

1。)你是否单元测试发布代码?

2。)如果是这样,那么你是否保持这些单元测试不变,以便测试本身存在于生产环境中?

我在#1中看到了这个值,但是在生产中为例如NUnit程序集创建依赖项是一种“好习惯”吗?

告诉我你的想法。

5 个答案:

答案 0 :(得分:16)

  1. 绝对。如果我们的构建通过了单元测试套件,那么它就会被标记为生产候选者
  2. 否。部署不包括测试或支持库(例如单元测试库,模拟等)
  3. 以上是我的一般规则(我通常部署到非技术用户)。但是我确实有一个例外,它是一个编程实用程序,使用~130个测试脚本进行单元测试。因为测试脚本是示例的两倍,所以我将它们与生产版本一起部署,因此它们增强了现有文档。

    使用开源代码部署测试绝对值得。它允许人们玩,修改和提交补丁,同时能够运行成功通过的测试,以允许释放原始工件。

答案 1 :(得分:8)

是和是,发布和调试版本之间的应用程序行为可能不同,因此作为发布过程的一部分,发布版本必须通过其所有单元测试。

答案 2 :(得分:2)

  1. 当然可以!单元测试在所有构建配置上运行。

  2. 单元测试始终完好无损,但这并不意味着装运的组件依赖于与测试相关的任何内容。 测试始终以并行程序集(在相同的构建环境中)编写,然后测试生产程序集。并行组件不包含,因为它只包含测试。

答案 3 :(得分:2)

  1. 是的,请记住必须捕获的经典“带副作用的断言”错误。但是这个不需要像调试版本那样经常完成,每天都应该进行完整的测试。
  2. 通常,单元测试位于不同的翻译单元和不同的项目中,因此主项目的发布版本根本不会触及它们。如果您的单元测试与测试代码的翻译单元相同,则可以使用条件编译将它们从发行版中排除。

答案 4 :(得分:2)

取决于该项目。对于数字1是。遵循委托人应该检查所有内容到源代码控制中,并且应该很容易让新开发人员继续。让它们成为代码库的一部分。新人可以办理退房手续并进行测试。

它们是否部署到生产是一个不同的问题。我还没有在那里需要的项目。 Rails的部署模型(通常)只是在生产机器上检查整个项目,所以是的,它们就在那里。 Java / Maven项目有一个完整的构建/打包步骤,通常在构建最终的.war文件时可以 - 并且 - 删除单元测试。

无论哪种方式,你都不希望它们运行。在今天的环境中,如果它们位于那里并不重要 - 内存和磁盘是如此便宜,它确实不是问题。我听说你不想在生产服务器上使用测试代码这样的论点,这样它就不会有运行的风险,但我还没有听说过这种情况会发生的情况。