避免在运行单元测试后生成完整的解决方案

本文关键字:解决方案 后生 运行 单元测试 | 更新日期: 2023-09-27 18:37:15

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

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

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

并且单元测试项目位于具有 N 个项目的解决方案中,当我运行测试时,VS 将构建所有 N-1 项目......就我而言,这种行为很无聊,因为它需要太多时间(解决方案包含许多项目)并且某些项目包含错误。

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

避免在运行单元测试后生成完整的解决方案

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

这也是很好的测试内务管理 - 为每个解决方案项目创建一个单独的单元测试项目,而不是一个依赖于其他任何项目的大型项目。这样做有几个优点:

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

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

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

如果生成失败,则没有可供测试运行程序使用的有效程序集,因此 VS 必须重新生成整个解决方案,然后运行程序才能工作。在这种情况下,显而易见的解决方案是修复错误。

修复错误之前,您可以使用一些权宜之计:

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

挣扎了很长时间。我实际上讨厌自动构建过程,即使一切都很成功。

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

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