代码之家  ›  专栏  ›  技术社区  ›  Precipitous

如何验证由msbuild创建的部署包?(最好使用mstest或nunit)

  •  0
  • Precipitous  · 技术社区  · 15 年前

    我们的msbuild过程为部署创建了各种zip包(主要是网站,但也有其他东西)。我们经常会遇到各种各样的问题,这些问题会不断出现——包括不应该出现的文件、丢失的资源。这迫切需要自动化验证。测试的标准很简单

    foosite包的验证:

    • 资源文件已存在。
    • 没有测试结果文件、obj文件或其他构建工件
    • 等等

    理想情况下,我可以使用nunit或mstest,这是大家都熟悉的。Msbuild知道包在哪里。我们有很多包,可能在不同的分支上并发构建。因此,包的位置和名称是不确定的——因此测试不知道包在哪里。

    向mstest或nunit提供msbuild信息的最简单方法是什么? 答案 this question 然而,如果有一个可能的答案,这个问题得到的是架构建议,而不是答案。我知道这不是一个单元测试,但是测试框架很方便。我可以创建一个exe来验证构建——但为什么要在项目中添加几个小时呢?

    或者,对于自动验证构建包,您有更好的建议吗? (MSI、拉链之类的)?

    2 回复  |  直到 7 年前
        1
  •  1
  •   blowdart    15 年前

    我最后做的是有一堆定制的MS构建任务,它们在虚拟服务器上启动虚拟机,将MSI复制到机器上,以静默方式部署它,然后根据它进行验证。我曾经 PSExec 启动MSI。然后它可以使用 MSTest command line runner 使用MSTest并运行测试位。

    这对你来说可能有些过头了,但使用虚拟机可以让你从头开始,而不受之前安装在开发设备上的任何影响。

        2
  •  0
  •   Community Dunja Lalic    7 年前

    如果您想要快速失败,比如单元测试,那么我建议您针对您的包创建单元测试。这样的测试将解压。压缩包,并对内容运行一些断言。

    你甚至可以对软件包使用一些TDD技术。例如,如果由于某个特定文件丢失而导致部署失败,那么编写一个因文件丢失而失败的单元测试;更改生成以便文件存在;然后确保单元测试成功。

    但总的来说,部署问题要比这更广泛,我也赞同他们的建议 blowdart 。部署到一个或多个虚拟机中,然后在部署的环境中运行自动化测试。这些测试不仅测试简单的事情,比如安装过程中是否返回了错误;他们还会检查IIS虚拟目录是否设置正确、属性和内容是否正确,以及网站是否基本运行。

    我会使用几个不同的虚拟机来测试不同的部署场景:一个用于干净的部署;一个用于从版本升级-1等。每个环境都可能运行相同或类似的IVT测试。

    即使您不能同时完成这一切,本练习中涉及的思考过程也应该导致对部署环境的更正式定义。当你有机会在实际测试中体现这一正式定义时,这将很有帮助。