C# VS 2010使用自定义测试条件进行数据库单元测试

C# VS 2010使用自定义测试条件进行数据库单元测试,c#,unit-testing,visual-studio-2010,datadude,vs-unit-testing-framework,C#,Unit Testing,Visual Studio 2010,Datadude,Vs Unit Testing Framework,在阅读了下面关于MSDN的文章之后,我决定尝试为我的数据库单元测试创建一个自定义测试条件 我满足了终极或高级环境的要求 创建了一个新的类库项目,并引用了Microsoft.Data.Schema.UnitTesting和Microsoft.Data.Schema以及Microsoft.Data.Schema.Sql 我创建了一个继承自TestCondition的类,并将其命名为ExpectedSqlException,定义如下 编辑: 接下来,我创建了Extensions.xml文件,然后

在阅读了下面关于MSDN的文章之后,我决定尝试为我的数据库单元测试创建一个自定义测试条件

  • 我满足了终极或高级环境的要求
  • 创建了一个新的类库项目,并引用了
    Microsoft.Data.Schema.UnitTesting
    Microsoft.Data.Schema
    以及
    Microsoft.Data.Schema.Sql
  • 我创建了一个继承自TestCondition的类,并将其命名为ExpectedSqlException,定义如下
编辑:

  • 接下来,我创建了Extensions.xml文件,然后将其放入
    %ProgramFiles%\Microsoft Visual Studio 10.0\VSTSDB\Extensions
    中,看起来是这样的(类型键/值是我的程序集公共信息,这对于您的程序集应该不同)

    
    
  • 并在大会签字后将大会注册到GAC

因此,现在使用我的新TestCondition,我应该能够在数据库单元测试设计器中使用它来定义期望值,但可惜它不起作用:(


有人能帮我吗?我遗漏了什么?

我可以看出,我在做这件事时做了一件不同的事情,但在“如何链接您”中没有明确说明

它还喋喋不休地说要把东西放到“程序文件”中,但这可能只适用于32位的机器。Visual Studio是一个32位的应用程序,在64位的机器(我正在使用)上,我忽略了说明,将程序集和xml文件复制到%ProgramFiles(x86)%不是%ProgramFiles%——这似乎对我有效。但我从未尝试过%ProgramFiles%——因此我无法验证这是一个问题

是这样吗

增编:

进一步查看您的代码,您必须在TestCondition上添加[DatabaseSchemaProviderCompatibility(null)]属性。这将在当前项目中没有加载数据库架构提供程序时加载扩展,测试项目就是这样。该属性不是很直观


詹姆斯。

嗨,詹姆斯,有趣的理论,我在一台32位机器上工作,并尝试了“在程序文件目录中”以及最后“进入GAC”但仍然没有运气,我想知道你是否会用“如何编辑”扩展你的答案…尝试添加上述属性。很好,尝试将属性参数中的类型更改为null不100%确定是否是这样,但它起了作用,谢谢
     [DisplayName("Some test condition")] 
     [DatabaseSchemaProviderCompatibility(null)] 
     public class SomeTestCondition : TestCondition
     {
         public override void Assert(System.Data.Common.DbConnection validationConnection, Microsoft.Data.Schema.UnitTesting.ExecutionResult[] results)
         {
         ...
         }
    } 
<?xml version="1.0" encoding="utf-8"?>    
<extensions assembly="" version="1" xmlns="urn:Microsoft.Data.Schema.Extensions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions Microsoft.Data.Schema.Extensions.xsd">    
    <extension type="SomeTestCondition.SomeTestCondition" assembly="SomeTestCondition, Version=1.0.0.0, Culture=neutral, PublicKeyToken=01a289ad96d7a8a8" enabled="true" />    
</extensions>