VS 2010 Database Unit Testing mit benutzerdefinierten Testbedingungen
-
28-10-2019 - |
Frage
Nach dem Lesen des folgenden Artikels Testbedingungen für den Datenbank-Unit-Test-Designer erstellen Auf MSDN habe ich beschlossen, eine benutzerdefinierte Testbedingung für meine Datenbank-Unit-Tests zu erstellen
- Ich habe die Anforderungen von Ultimate oder Premium als meine Umgebung erfüllt.
- Erstellt ein neues Klassenbibliotheksprojekt und verweist auf
Microsoft.Data.Schema.UnitTesting
undMicrosoft.Data.Schema
sowieMicrosoft.Data.Schema.Sql
- Ich habe eine Klasse erstellt, die von TestCondition erbt, und sie ExpectedSqlException genannt, die wie folgt definiert ist:
BEARBEITEN:
[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) { ... } }
-
Nach dem Vorgehensweise habe ich dann die Erweiterungen erstellt XML-Datei, die ich dann in
%ProgramFiles%\Microsoft Visual Studio 10.0\VSTSDB\Extensions
abgelegt habe und es sieht so aus (der Typ Schlüssel / Wert ist meine öffentliche Assembly-Information, dies sollte für Ihre anders sein)<?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>
-
Und die Assembly nach dem Signieren der Assembly im GAC registriert
Jetzt sollte ich mit meiner neuen Testbedingung in der Lage sein, sie im Designer für Datenbank-Unit-Tests zu verwenden, um Erwartungen zu definieren, ABER ES FUNKTIONIERT NICHT :(
Kann mir jemand dabei helfen? Was vermisse ich?
-
Lösung
Ich kann eine Sache sehen, die ich anders gemacht habe, als ich dies getan habe, die in der Verknüpfung, auf die Sie verwiesen haben, nicht klar angegeben ist.
Es geht darum, Dinge in "Programmdateien" zu speichern, aber vielleicht funktioniert dies nur für 32-Bit-Maschinen.Visual Studio ist eine 32-Bit-App. Auf dem 64-Bit-Computer (den ich verwendet habe) habe ich die Anweisungen ignoriert und die Assembly- und XML-Datei in% ProgramFiles (x86)% NOT% ProgramFiles% kopiert - was für mich zu funktionieren schien.Ich habe% ProgramFiles% allerdings nie ausprobiert - daher kann ich nicht überprüfen, ob dies ein Problem ist.
Ist es das?
Nachtrag:
Wenn Sie sich Ihren Code genauer ansehen, müssen Sie das Attribut [DatabaseSchemaProviderCompatibility (null)] zu Ihrer Testbedingung hinzufügen.Dadurch wird die Erweiterung geladen, wenn im aktuellen Projekt kein Datenbankschema-Anbieter geladen ist, was bei Testprojekten der Fall wäre.Dieses Attribut ist nicht sehr intuitiv.
James.