关闭测试结果以改进性能
若要改进 Visual Studio 的性能,请关闭以前的测试结果。
运行测试时,Visual Studio 将测试运行和测试结果保存在内存中。随着测试运行和测试结果的累积,会分配更多的内存。在“测试结果”窗口工具栏上单击“关闭结果”可以释放内存中的测试运行。此操作可释放测试结果对象,但不会显式调用垃圾回收器。这意味着内存将变为可用,但不一定立即可用。
此外,您也可以设置内存中最多可保存的测试运行数。
在获取代码覆盖率数据时使用“AnyCPU”生成设置
只有当测试 32 位程序集中的代码时,才能获取代码覆盖率数据。为了保证能够满足此条件,请设置一个特殊的生成属性:
● 对于 C# 项目,请将“目标平台”设置为 x86。
● 对于 Visual Basic 项目,请将“目标 CPU”设置为 x86。
说明:此警告并不适用于 C++ 项目,因为“AnyCPU”不是 C++ 项目的平台选项。
如果您使用“AnyCPU”值来生成自己的项目,则针对所得到的程序集运行的测试将生成代码覆盖率数据,但是该测试运行还生成一个警告。您可以在“测试运行详细信息”页上查看该警告的文本:
Warning VSP2013 : Instrumenting this image requires it to run as a 32-bit process. The CLR header flags have been updated to reflect this.
此警告表示已经对该程序集进行了重新编译,而且已经应用了 x86 属性,以便在该测试运行过程中获得代码覆盖率数据。为了避免出现此警告,请使用 x86 设置来编译要获得其代码覆盖率数据的任何程序集。
说明:如果您的应用程序将要在 32 位和 64 位计算机上运行,请记住在完成测试之后,使用“AnyCPU”设置重新编译它。
运行单元测试可以锁定 C++/CLI 测试程序集
您可能会遇到测试执行引擎在您的测试项目中打开并锁定某个程序集的情况。发生这种情况时,您无法执行某些操作,例如,将更改保存到该程序集中。下列情况下可能会发生此问题:
● 第 1 种情况:您为测试项目 TestProjectA 禁用了部署。TestProjectA 是用 C++/CLI 编译的。TestProjectA 中的代码定义了一个属性类,该属性至少修饰 TestProjectA 的一个测试方法。此时,当您在 TestProjectA 中运行单元测试时,测试执行引擎将打开 TestProjectA.DLL 并可以将其保留为锁定状态。