关闭测试结果以改进性能

  若要改进 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 并可以将其保留为锁定状态。

 ● 第 2 种情况:您的测试项目 TestProject1 中包含一个 DLL,它是从第二个测试项目 TestProject2 中编译的。TestProject2 是用 C++/CLI 编译的。TestProject2 中的代码定义了一个属性类,该属性至少修饰 TestProject2 的一个测试方法。此时,当您在 TestProject1 中运行单元测试时,测试执行引擎将打开 TestProject2.DLL 并可以将其保留为锁定状态。

  在上述两种情况下,解决方案都分两部分进行。首先执行下列步骤。

  1、在“工具”菜单上选择“选项”。

  “选项”对话框打开。

  2、展开“测试工具”并单击“测试执行”。

  3、在“性能”下,清除“使测试执行引擎在两次测试运行之间保持运行”复选框。

  完成这些步骤之后,如果问题仍然存在,请执行下列操作:

  更改代码,使在 C++/CLI 中编译的测试项目不需要加载到默认 AppDomain 中。若要实现此目的,一种方法是将您使用的自定义属性的定义移动到在 C# 中实现的单独程序集中。

  详细信息(按测试类型)

  正如本节所述,在运行特定测试类型时,经常会发生一些特定的错误。

  ● 手动测试。手动测试不能在远程运行。当您尝试启动一个包含手动测试的测试运行时,Test Edition 会尝试从测试运行中移除该手动测试。当出现这种情况时,系统会提醒您这一事实,并让您选择是取消测试运行,还是在移除手动测试的前提下继续运行。有关更多信息,请参见 Test Edition 的对话框。

  ● 顺序测试。顺序测试所遇到的错误通常与文件部署有关。在运行顺序测试之前,测试引擎必须先找到所有包含的测试中的全部测试文件以及其他一些必需文件,然后再对这些文件进行部署。如果其中任意单个测试的此步骤失败,都会导致错误发生。

  ● 一般测试。在运行一般测试时,也可能发生部署错误。对于一般测试,可以用两种方式来指定要部署的文件:在测试运行配置的“部署”页上指定,以及在“一般”测试自身的创作页上指定。如果没有列出所需的全部文件或者 Team System 测试工具 在指定位置找不到这些文件,测试有可能失败。

  这两种不同的部署文件方法所引发的错误分别出现在不同级别。如果部署错误与在一般测试创作页中指定的文件有关,则将出现测试级错误。如果部署错误与在运行配置中指定的文件有关,则将出现运行级错误。