代码之家  ›  专栏  ›  技术社区  ›  Scott Marlowe

生产发布代码中的单元测试?[关闭]

  •  10
  • Scott Marlowe  · 技术社区  · 15 年前

    几个问题:

    1.)你是单元测试发布代码吗?

    2.)如果是这样,那么您是否保持这些单元测试的完整性,以便测试本身存在于生产环境中?

    我在1中看到了价值,但在生产中创建对nunit程序集的依赖性是一种“良好实践”吗?

    把你的想法告诉我。

    5 回复  |  直到 15 年前
        1
  •  16
  •   Brian Agnew    15 年前
    1. 当然。如果我们的构建通过了单元测试套件,那么它将被标记并成为产品的候选者。
    2. 不。部署不包括测试或支持库(例如单元测试库、模拟等)。

    上面是我的一般规则(我通常部署给非技术用户)。不过,我确实有一个例外,它是一个编程实用程序,使用大约130个测试脚本进行单元测试。因为测试脚本可以作为示例使用,所以我将它们与生产版本一起部署,从而增强现有文档。

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

        2
  •  8
  •   Bob    15 年前

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

        3
  •  2
  •   morechilli    15 年前
    1. 是的,当然!单元测试在所有生成配置上运行。

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

        4
  •  2
  •   Ozan HELPY    15 年前
    1. 是的,请记住必须捕获的经典“使用副作用断言”错误。但这一次不需要像调试构建那样频繁地进行,在调试构建中,每天都应该进行一次完整的测试。
    2. 通常,单元测试在不同的翻译单元和不同的项目中,这样,主项目的发布版本就不会碰到它们。如果您的单元测试与测试代码使用相同的翻译单元,那么您可以使用条件编译将它们从版本中排除。
        5
  •  2
  •   ndp    15 年前

    取决于项目。对1号。遵循这一原则,所有的东西都应该签入源代码控制,并且让一个新的开发人员开始工作应该很简单。使它们成为代码库的一部分。新来的人可以进行检查并运行测试。

    它们是否被部署到生产中是另一个问题。我没有参与过一个项目 需要 他们在那里。Rails的部署模型(通常)只是在生产机器上签出整个项目,所以它们确实存在。Java/Maven项目有一个完整的构建/打包步骤,通常在构建最终.WAR文件时可以删除单元测试。

    不管怎样,你都不希望他们跑。在今天的环境中,如果他们把站点放在那里并不重要——内存和磁盘太便宜了,这真的不是问题。我听说过这样的论点,即您不希望测试代码在生产服务器上运行,这样就不会有运行的风险,但我没有听说过这种情况真正发生时的场景。