如何:将 Visual Studio 2010 自定义测试条件从早期版本升级到 SQL Server Data Tools
要使用您在低于 SQL Server Data Tools 的版本中创建的测试单元条件,必须升级它:
更新引用
更新类属性和类型引用
安装已升级的测试条件
更新引用
要更新项目引用:
仅对于 Visual Basic,在**“解决方案资源管理器”中单击“显示所有文件”**。
在**“解决方案资源管理器”中,展开“引用”**节点。
右键单击以下程序集引用,然后单击**“删除”**:
Microsoft.Data.Schema.UnitTesting
Microsoft.Data.Schema
在**“项目”菜单上,或通过右键单击“解决方案资源管理器”中的项目文件夹,单击“添加引用”**。
单击 .NET 选项卡。
在**“组件名称”列表中选择 System.ComponentModel.Composition,然后单击“确定”**。
添加所需的程序集引用。右键单击项目节点,然后单击“添加引用”。单击“浏览”并导航到 C:\Program Files (x86)\MicrosoftSQL Server\110\DAC\Bin 文件夹。选择 Microsoft.Data.Tools.Schema.Sql.dll 并单击“添加”,然后单击“确定”。
在**“项目”菜单上,单击“卸载项目”**。
在“解决方案资源管理器”中右键单击“项目”,然后选择“编辑project_name**.csproj**”。
在导入 Microsoft.CSharp.targets 后添加以下 Import 语句:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(VisualStudioVersion)' == ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.Sql.UnitTesting.targets" Condition="'$(VisualStudioVersion)' != ''" />
保存并关闭该文件。在**“解决方案资源管理器”中右键单击该项目,然后选择“重新加载项目”**。
打开该测试条件类,删除以 Microsoft.Data.Schema 开头的所有 using 语句。这样做最简单的方式是右键单击该文件,然后选择**“组织 using”,选择“移除和排序”**。必须删除以下 using 语句:
using Microsoft.Data.Schema.UnitTesting; using Microsoft.Data.Schema.UnitTesting.Conditions; using Microsoft.Data.Schema.Extensibility; using Microsoft.Data.Schema;
如果以下 using 语句不存在,请将它们添加到该文件:
using System.ComponentModel; using Microsoft.Data.Tools.Schema.Sql.UnitTesting; using Microsoft.Data.Tools.Schema.Sql.UnitTesting.Conditions;
您的测试条件现在使用 SQL Server 单元测试程序集引用。
更新类属性和类型引用
将较旧的单元测试类属性替换为新属性。SQL Server 单元测试可扩展性现在基于托管可扩展性框架 (MEF)。您还必须更新一些类型引用。
更新类属性
按以下方式更新您的代码:
删除 DatabaseSchemaProviderCompatibility 属性。此(这些)属性是以前版本的可扩展性功能要求的,在 SQL Server 单元测试中不受支持。
删除 DisplayName 属性。显示名称包含在新属性中。
添加新的 ExportTestCondition 属性。此属性对于测试条件必须存在,才能在 SQL Server 单元测试中发现和使用。ExportTestCondition 并替换 DatabaseSchemaProviderCompatibility 属性。ExportTestCondition 采用两个参数:
DisplayName 是第一个参数。它替换 DisplayName 属性,用于描述此类型的所有测试条件。
第二个参数用于唯一标识您的扩展。您可以使用 typeof(NewTestCondition) 仅传递您的类型,因为它应是唯一的。但是,如果愿意还可以传递字符串 ID。
您的类定义应按如下方式更改:
早于:
[DatabaseSchemaProviderCompatibility(typeof(DatabaseSchemaProvider))] [DatabaseSchemaProviderCompatibility(null)] [DisplayName("NewTestCondition")] public class NewTestCondition:TestCondition { // Additional implementation to be added here }
晚于:
[ExportTestCondition("NewTestCondition ", typeof(NewTestCondition))] public class NewTestCondition:TestCondition { // Additional implementation to be added here }
更新类型引用
一些类型名称已在 SQL Server 单元测试框架中更改。要更新您的代码以使用新的类型名称,请使用**“编辑”菜单中的“查找和替换”**。类型名称现在以 Sql 开头。应按以下方式更新类名称:
旧类型名称 |
新类型名称 |
---|---|
ExecutionResult |
SqlExecutionResult |
安装已升级的测试条件
在以前版本的数据库单元测试中,可能要求您在全局程序集缓存中安装您的测试条件,或要求创建包含您的程序集信息的 XML 文件。使用 SQL Server 单元测试时,不再需要这一额外过程。(有关详细信息,请参阅编译项目并且安装您的测试条件。
在更新引用后,请验证您的程序集已签名和编译。
接下来,从输出目录(默认情况下为 My Documents\Visual Studio 2010\Projects\<yoursolutionname>\<yourprojectname>\bin\Debug\) to %Program Files%\Microsoft Visual Studio <Version>\Common7\IDE\Extensions\Microsoft\SQLDB\TestConditions 目录)复制程序集文件。启动 Visual Studio 时,它将标识 TestConditions 目录中的所有扩展并使它们可供在会话中使用:
升级需要使用新测试条件的现有测试
查找使用旧测试条件并需要使用新条件的所有测试项目。确保升级这些测试项目。有关更多信息,请参见升级包含数据库单元测试的较旧的测试项目。
删除对旧测试条件的程序集引用。
将一个新的 SQL Server 单元测试添加到该项目,以便创建对项目中已升级的测试条件的程序集引用。为创建该引用,必须添加一个测试类。您可以在添加引用后删除该测试类。