繁体   English   中英

运行单元测试后避免完整的解决方案构建

[英]Avoid complete solution building after run Unit Tests

我正在使用VS2013 Professional进行单元测试。 特别是我正在使用NUnit框架(NUnit TestAdapter for VS2013)。 我的问题是,当我运行测试时,VS开始构建解决方案中的所有项目。 目前,单元测试项目未引用任何解决方案项目。

如果我只是编写一个单一的测试方法,如:

[Test]
public void SimpleTestMethod(){
    Assert.That("a", Is.EqualTo("a"));
}

单元测试项目在N项目的解决方案中,当我运行我的测试时,VS将构建所有N-1项目......在我的情况下,这种行为很无聊,因为它需要太多时间(解决方案包含许多项目)有些项目包含错误。

有没有办法在没有完整的解决方案构建的情况下运行我的SimpleTestMethod()

将测试项目分解为仅引用解决方案项目子集的多个项目。

这也是很好的测试管理 - 为每个解决方案项目都有一个单独的单元测试项目,而不是一个与其他任何东西有依赖关系的大型项目。 这有几个好处:

  • 测试运行得更快
  • 隔离测试用例,尤其是配置设置要容易得多
  • 您可以将项目及其测试用例一起版本化

一个好的命名实践是将测试项目命名为与目标项目相同的.Tests后缀。 您还可以创建名为“测试”的解决方案文件夹(不是真实文件夹),并在其中移动测试项目。

至于原因:测试运行器使用单元测试程序集及其依赖项来运行测试。 如果任何程序集的依赖项发生更改,则必须重建程序集和依赖项。 Visual Studio不知道外部工具将调用什么,因此它必须构建所有已更改的程序集及其依赖项。

如果构建失败,则没有有效的程序集供测试运行器使用,因此VS必须在运行器运行之前重建整个解决方案。 在这种情况下,显而易见的解决方案是修复错误。

您可以使用一些权宜之计选项,直到您可以修复错误:

  • 暂时从构建配置中删除损坏的项目
  • 拆分解决方案,以便您拥有可以构建和测试的解决方案

我也在很长一段时间内努力解决这个问题。 我实际上讨厌自动构建过程,即使一切都成功了。

我开始通过命令行运行测试。 不需要构建过程。 您可以编写自己的.bat文件并保留测试结果的日志。 可以添加大量命令行参数来自定义您要查找的内容。

https://msdn.microsoft.com/en-us/library/jj155796.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM