【发布时间】:2013-02-11 17:49:26
【问题描述】:
我们有以下设置:
- Visual Studio 2012 / SQL Server 2012
- TFS 2010,构建服务器在构建时自动运行单元测试。
- 包含大量代码和 2 个测试项目(因此在构建时需要 2 个单独的程序集)的解决方案,测试是使用 Visual Studio 的单元测试框架完成的。
- 第一个程序集包含所有实际的单元测试,它们都运行正常。在大多数测试中,我们在数据库中写入一些数据,运行一些代码, 然后清理数据。
- 我们使用第二个程序集进行数据库播种。由于测试和程序集按字母顺序加载/执行 顺序,我们在第二个程序集中有一个测试,其名称以 “Z”(程序集名称也以“Z”开头)。构建服务器日志 还要确认 Z 测试是最后执行的。所以这个测试 只在数据库中写入一些数据。我们更喜欢播种而不是 由于现有基础设施而使用数据库项目 从 Excel 文件中读取数据并写入 SQL Server。
问题在于,当我们在开发机器上运行所有测试时,Z 测试最后执行,而种子数据仍保留在数据库中。在构建服务器上执行测试时,Z 测试也会最后执行,但数据不会保留在 db 中。
根据 SQL Server 分析器,插入/创建表被执行,因此数据在我们的机器和构建服务器上都进入数据库,但在构建服务器上,一些删除/删除查询在插入。我们不知道他们来自哪里。
我们尝试仅运行 Z 测试程序集,数据仍保留在数据库中。所以下降一定是由其他组件以某种方式引起的。但是怎么做?为什么 Visual Studio 和构建服务器运行测试的方式存在差异?
有没有人遇到过这样的事情?
【问题讨论】:
标签: visual-studio unit-testing visual-studio-2012 tfsbuild