如何:配置单元测试以面向 .NET Framework 3.5

当您使用 Visual Studio 2010 时,测试项目中的默认 .NET Framework 目标版本为 .NET Framework 4。 此外,如果您从 Visual Studio 2008 升级测试项目,则默认情况下将升级为面向 .NET Framework 4。 您可以编辑项目属性并显示地使项目重定向到 .NET Framework 3.5。

警告

若要使测试项目重定向到使用 .NET Framework 3.5,必须安装 Visual Studio 2010 Service Pack 1。

Visual Studio 2010 Service Pack 1 针对面向 .NET Framework 3.5 的单元测试提供以下基本支持:

  • 您可以创建单元测试项目并使其面向 .NET Framework 3.5。

  • 在您的本地计算机上,您可以从 Visual Studio 2010 Service Pack 1 运行面向 .NET Framework 3.5 的单元测试。

  • 您可以使用 MSTest.exe 从命令提示符运行面向 .NET Framework 3.5 的单元测试。

  • 您可以在生成代理(作为生成的一部分)上运行单元测试。

测试 SharePoint 2010 应用程序

上文列出的功能还支持使用 Visual Studio 2010 Service Pack 1 为 SharePoint 2010 应用程序编写单元测试和集成测试。 有关以下内容的更多信息如何使用 Visual Studio 2010 来开发 SharePoint 2010 应用程序,请参见 Visual Studio 中的 SharePoint 开发生成和调试 SharePoint 解决方案使用 ALM 功能验证和调试 SharePoint 代码

限制

当您使测试项目重定向到使用 .NET Framework 3.5 时,存在以下限制:

  • 在 .NET Framework 3.5 中,仅包含单元测试的测试项目支持多定向功能。 .NET Framework 3.5 不支持任何其他测试类型,如编码的 UI 或负载测试。 已阻止对单元测试以外的测试类型执行重定向操作。

  • 仅在默认的主机适配器中支持执行 .NET Framework 3.5 测试, 在 ASP.NET 主机适配器中不支持。 必须在 ASP.NET Development Server 环境中运行的 ASP.NET 应用程序必须与 .NET Framework 4 兼容。

  • 当您运行支持 .NET Framework 3.5 多定向功能的测试时,将禁用数据收集支持。 您可以使用 Visual Studio 命令行工具来运行代码覆盖率。

  • 使用 .NET Framework 3.5 的单元测试不能在远程计算机上运行。

使 Visual Basic 单元测试项目重定向到 .NET Framework 3.5

  1. 创建新的 Visual Basic 单元测试项目。 在**“文件”菜单上,选择“新建”,然后单击“项目”**。

    将显示**“新建项目”**对话框。

  2. 在**“已安装的模板”下,展开“Visual Basic”。 选择“测试”,然后选择“测试项目”**模板。

  3. 在**“名称”文本框中,键入 Visual Basic 测试项目的名称,然后单击“确定”**。

  4. 在“解决方案资源管理器”中,右击新的 Visual Basic 测试项目,然后选择**“属性”**。

    将显示 Visual Basic 测试项目的属性。

  5. 选择**“编译”选项卡,然后单击“高级编译选项”**按钮,如下图所示。

    高级编译选项

  6. 使用**“目标框架(所有配置)”下拉列表,将目标框架从“.NET Framework 4”更改为“.NET Framework 3.5”**,如下图中的标注 B 所示。

    目标框架下拉列表

    提示

    如果提示一条错误消息,则遵循消息中的链接所提供的说明,或参见下面的过程:使测试项目重定向到 .NET Framework 3.5 的其他可能步骤。

使 Visual C# 单元测试项目重定向到 .NET Framework 3.5

  1. 创建新的 Visual C# 单元测试项目。 在**“文件”菜单上,选择“新建”,然后单击“项目”**。

    将显示**“新建项目”**对话框。

  2. 在**“已安装的模板”下,展开“Visual C#”。 选择“测试”,然后选择“测试项目”**模板。

  3. 在**“名称”文本框中,键入 Visual C# 测试项目的名称,然后单击“确定”**。

  4. 在“解决方案资源管理器”中,右击新的 Visual C# 测试项目,然后选择**“属性”**。

    将显示 Visual C# 测试项目的属性。

  5. 选择**“应用程序”选项卡,然后使用“目标框架”下拉列表,将目标框架从“.NET Framework 4”更改为“.NET Framework 3.5”**,如下图所示。

    目标框架下拉列表

    提示

    如果提示一条错误消息,则遵循消息中的链接所提供的说明,或参见下面的过程:使测试项目重定向到 .NET Framework 3.5 的其他可能步骤。

使 Managed C++/CLI 单元测试项目重定向到 .NET Framework 3.5

  1. 创建新的 C++ 单元测试项目。 在**“文件”菜单上,选择“新建”,然后单击“项目”**。

    将显示**“新建项目”**对话框。

    警告

    如果您使用 Visual Studio 2008 创建了单元项目,并且希望使用 Visual Studio 2010 Service Pack 1 生成面向 .NET Framework 3.5 的 C++/CLI 单元测试项目,则必须在将项目用于 Visual Studio 2008 之前在 Visual Studio 2008 上安装 Visual Studio 2008 Service Pack 1。 这是定向到 .NET Framework 3.5 版的一个要求。 仅安装 .NET Framework 3.5 可再发行组件将不起作用。 Visual Studio 2010 中的 Visual C++ 工具(如 cl.exe)只能面向 .NET Framework 4。 因此,若要面向 .NET Framework 3.5,则必须从早期版本获得工具。 这些工具随 Visual Studio 一起发布,而非随 .NET Framework 发布。

  2. 在**“已安装的模板”下,展开“Visual C++”。 选择“测试”,然后选择“测试项目”**模板。

  3. 在**“名称”文本框中,键入 Visual C++ 测试项目的名称,然后单击“确定”**。

  4. 在“解决方案资源管理器”中,右击新的 Visual C++ 测试项目,然后选择**“卸载项目”**。

  5. 在“解决方案资源管理器”中,右击已卸载的 Visual C++ 测试项目,然后选择**“编辑 <项目名称>.vcxproj”**。

    .vcxproj 文件将在编辑器中打开。

  6. 在标有 "Globals" 的 PropertyGroup 中,将 TargetFrameworkVersion 设置为 3.5 版:

    <PropertyGroup Label="Globals">
        <TargetName>DefaultTest</TargetName>
        <ProjectTypes>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}</ProjectTypes>
        <ProjectGUID>{CE16D77A-E364-4ACD-948B-1EB6218B0EA3}</ProjectGUID>
        <TargetFrameworkVersion>3.5</TargetFrameworkVersion>
        <Keyword>ManagedCProj</Keyword>
        <RootNamespace>CPP_Test</RootNamespace>
      </PropertyGroup>
    
  7. 保存并关闭 .vcxproj 文件。

  8. 在“解决方案资源管理器”中,右击新的 Visual C++ 测试项目,然后选择**“重新加载项目”**。

使测试项目重定向到 .NET Framework 3.5 的其他可能步骤

如果您在将 Service Pack 1 安装到 Visual Studio 2010 之前修改了 devenv.exe.config 文件,则还需要其他步骤来使其面向 .NET Framework 3.5。 在检测到配置文件已修改的情况下,安装 Service Pack 1 不会重写配置文件。

提示

如果您已安装了 Visual Studio 加载项或插件,则可以修改 devenv.exe.config 文件。

如果您在安装 Service Pack 1 之前修改了 devenv.exe.config 文件并且未更正该文件,则将在以下情况下收到错误消息:

  • 尝试使用安装了 Service Pack 1 的 Visual Studio 2010 使测试项目重定向到 .NET Framework 3.5。

  • 尝试打开已执行了重定向操作的测试项目。

若要纠正此问题,请使用下面的过程。

将缺少的 XML 项添加到配置文件的步骤

  1. 关闭 Visual Studio 2010 的所有实例。

  2. 以管理员身份打开 Visual Studio 2010 命令提示符。

  3. 如果您使用的是 32 位 Windows,则将目录切换到:"%programfiles%\MicrosoftVisual Studio 10.0\Common7\IDE",或者,如果您使用的是 64 位 Windows,则将目录切换到:"%programfiles(x86)%\MicrosoftVisual Studio 10.0\Common7\IDE"

  4. 在文本编辑器(如 notepad.exe)中打开 devenv.exe.config 文件。

  5. 在 <assemblyBinding> 节点下,添加以下各项:

    <dependentAssembly>
    
            <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.UnitTestFramework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    
            <bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>
    
          </dependentAssembly>
    
          <dependentAssembly>
    
            <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    
            <bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>
    
          </dependentAssembly>
    
          <dependentAssembly>
    
            <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    
            <bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>
    
          </dependentAssembly>
    
          <dependentAssembly>
    
            <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Tip" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    
            <bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>
    
          </dependentAssembly>
    
  6. 在 <configuration> 节点下,添加以下项:

    <appSettings>
        <add key="TestProjectRetargetTo35Allowed" value="true" />
     </appSettings>
    
  7. 保存 devenv.exe.config 文件。

  8. 重新启动 Visual Studio 2010。

    现在,您应能够使您的测试项目重定向到 .NET Framework 3.5。

请参见

概念

针对现有代码创建并运行单元测试

其他资源

Visual Studio 中的 SharePoint 开发

生成和调试 SharePoint 解决方案