0

在阅读了以下文章为 MSDN 上的数据库单元测试设计器创建测试条件后,我决定尝试为我的数据库单元测试创​​建自定义测试条件

  • 作为我的环境,我已经满足 Ultimate 或 Premium 的要求。
  • 创建了一个新的类库项目并Microsoft.Data.Schema.UnitTesting引用Microsoft.Data.SchemaMicrosoft.Data.Schema.Sql
  • 我创建了一个继承自 TestCondition 的类并将其命名为 ExpectedSqlException,定义如下

编辑:

     [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)
         {
         ...
         }
    } 
  • 按照我如何创建然后放入的extentions.xml文件,%ProgramFiles%\Microsoft Visual Studio 10.0\VSTSDB\Extensions它看起来像这样(类型键/值是我的程序集公共信息,这应该与你的不同)

    <?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>
    
  • 并在签署程序集后将程序集注册到 GAC

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

有人可以帮我弄这个吗?我错过了什么?

4

1 回答 1

1

当我这样做时,我可以看到我做的一件事有所不同,这在您引用的如何链接中没有明确说明。

它着重于将东西放入“程序文件”中,但也许这只适用于 32 位机器。Visual Studio 是一个 32 位应用程序,在 64 位机器(我正在使用)上,我忽略了说明并将程序集和 xml 文件复制到 %ProgramFiles(x86)% NOT %ProgramFiles% - 这似乎对我有用。我从来没有尝试过 %ProgramFiles% - 所以我无法验证这是一个问题。

是这样吗?

附录:

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

詹姆士。

于 2011-02-09T23:55:09.487 回答