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

Unit testing 生产发布代码中的单元测试?,unit-testing,agile,production-environment,Unit Testing,Agile,Production Environment,两个问题: 1.)是否有单元测试发布代码 2.)如果是,那么您是否将这些单元测试保持不变,以便测试本身存在于生产环境中 我在#1中看到了价值,但在生产中创建对NUnit程序集等的依赖关系是否是一种“良好做法” 请告诉我您的想法。是和是,发布版本和调试版本之间的应用程序行为可能不同,因此作为发布过程的一部分,发布版本必须通过所有单元测试 当然。如果我们的构建通过了单元测试套件,那么它将被标记并成为生产的候选 不包括。部署不包括测试或支持库(例如单元测试库、模拟等) 以上是我的一般规则(我通常部署给

两个问题:

1.)是否有单元测试发布代码

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

我在#1中看到了价值,但在生产中创建对NUnit程序集等的依赖关系是否是一种“良好做法”


请告诉我您的想法。

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

  • 当然。如果我们的构建通过了单元测试套件,那么它将被标记并成为生产的候选
  • 不包括。部署不包括测试或支持库(例如单元测试库、模拟等)
  • 以上是我的一般规则(我通常部署给非技术用户)。然而,我有一个例外,这是一个编程实用程序,它是用大约130个测试脚本进行单元测试的。由于测试脚本兼作示例,我将它们与生产版本一起部署,因此它们增强了现有文档

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

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

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

  • 是的,还记得经典的“断言有副作用”错误吗。但是这一步不需要像调试构建那样频繁,调试构建应该每天完成一个完整的测试
  • 通常,单元测试位于不同的翻译单元和不同的项目中,因此主项目的发布版本根本不涉及它们。但是,如果单元测试与测试代码位于相同的转换单元中,则可以使用条件编译将它们从版本中排除

  • 取决于项目。是的,1号。遵循的原则是,所有内容都应该检查到源代码控制中,并且让新开发人员开始工作应该很简单。让它们成为代码库的一部分。新人可以进行检查并运行测试

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


    无论哪种方式,你都不会期望他们逃跑。在今天的环境中,他们是否在那里并不重要——内存和磁盘非常便宜,这真的不是问题。我听过这样的说法,即您不希望在生产服务器上运行测试代码,这样就不会有运行的风险,但我没有听说过这种情况会发生。

    同意发布版本必须通过单元测试。。。但是部署单元测试框架和生产代码?