避免在 运行 单元测试后构建完整的解决方案
Avoid complete solution building after run Unit Tests
我正在使用 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 不知道外部工具将调用什么,因此它必须构建所有已更改的程序集及其依赖项。
如果构建失败,则没有可供测试 运行ner 使用的有效程序集,因此 VS 必须在 运行ner 可以工作之前重建整个解决方案。在这种情况下,显而易见的解决方案是修复错误。
在修复错误之前,您可以使用一些权宜之计:
- 暂时从构建配置中删除损坏的项目
- 拆分解决方案,以便您拥有可以构建和测试的解决方案
我也为此苦苦挣扎了很长时间。我实际上讨厌自动构建过程,即使一切都成功了。
我开始 运行 通过命令行进行测试。不需要构建过程。您可以编写自己的 .bat 文件并保留测试结果日志。可以添加大量命令行参数来自定义您要查找的内容。
我正在使用 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 不知道外部工具将调用什么,因此它必须构建所有已更改的程序集及其依赖项。
如果构建失败,则没有可供测试 运行ner 使用的有效程序集,因此 VS 必须在 运行ner 可以工作之前重建整个解决方案。在这种情况下,显而易见的解决方案是修复错误。
在修复错误之前,您可以使用一些权宜之计:
- 暂时从构建配置中删除损坏的项目
- 拆分解决方案,以便您拥有可以构建和测试的解决方案
我也为此苦苦挣扎了很长时间。我实际上讨厌自动构建过程,即使一切都成功了。
我开始 运行 通过命令行进行测试。不需要构建过程。您可以编写自己的 .bat 文件并保留测试结果日志。可以添加大量命令行参数来自定义您要查找的内容。