Prueba unitaria de base de datos VS 2010 con condición de prueba personalizada
-
28-10-2019 - |
Pregunta
Después de leer el siguiente artículo Crear condiciones de prueba para el diseñador de pruebas de la unidad de base de datos en MSDN decidí intentar crear una condición de prueba personalizada para las pruebas unitarias de mi base de datos
- He cumplido con los requisitos de Ultimate o Premium como mi entorno.
- Creé un nuevo proyecto de biblioteca de clases y referenciaron
Microsoft.Data.Schema.UnitTesting
yMicrosoft.Data.Schema
, así comoMicrosoft.Data.Schema.Sql
- Creé una clase heredada de TestCondition y la llamé ExpectedSqlException definida de la siguiente manera
EDITAR:
[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)
{
...
}
}
-
Siguiendo cómo , creé las extensiones .xml que luego coloqué en
%ProgramFiles%\Microsoft Visual Studio 10.0\VSTSDB\Extensions
y se ve así (el tipo clave / valor es la información pública de mi ensamblaje, esto debería ser diferente para el suyo)<?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>
-
Y registró la asamblea en el GAC después de firmar la asamblea
Así que ahora, con mi nueva condición de prueba, debería poder usarla dentro del diseñador de pruebas de unidades de base de datos para definir expectativas, PERO NO FUNCIONA :(
¿Alguien puede ayudarme con esto? ¿Qué me estoy perdiendo?
Solución
Puedo ver una cosa que hice de manera diferente cuando hice esto que no se indica claramente en la forma de vincularla a la que hizo referencia.
Habla sobre poner cosas en "Archivos de programa", pero tal vez esto solo funcione para máquinas de 32 bits.Visual Studio es una aplicación de 32 bits y en la máquina de 64 bits (que estaba usando) ignoré las instrucciones y copié el ensamblaje y el archivo xml en% ProgramFiles (x86)% NOT% ProgramFiles%, que parecía funcionar para mí.Sin embargo, nunca probé% ProgramFiles%, por lo que no puedo verificar que esto sea un problema.
¿Es eso?
Anexo:
Mirando más a fondo su código, tendrá que agregar el atributo [DatabaseSchemaProviderCompatibility (null)] en su TestCondition.Esto cargará la extensión cuando no tenga un proveedor de esquema de base de datos cargado en el proyecto actual, que sería el caso de Proyectos de prueba.Creo que ese atributo no es muy intuitivo.
James.