Prueba de la unidad de esfuerzo: el argumento 'xmlReader' no es válido


Pregunta

Actualmente estoy intentando probar de forma unitaria una clase de contexto del Entity Framework con el marco "Effort" ( http://effort.codeplex.com/wikipage?title=Tutorials&referringTitle=Home )

Si mi proyecto de prueba de unidad tiene dos clases que contienen métodos, el esfuerzo es el siguiente:

El argumento 'xmlReader' no es válido. Se debe suministrar un mínimo de un artefacto .ssdl.

Parece ser que el hecho de que el uso de un solo método con más de una clase cause el error. Prefiero no tener todas mis funciones de prueba de unidad en una clase.

Código de la prueba se está ejecutando:

IDataLoader loader = new Effort.DataLoaders.CsvDataLoader(Path.Combine(TestContext.DeploymentDirectory, "csvFiles"));
using (EntityConnection connection = Effort.EntityConnectionFactory.CreateTransient("name=Entities", loader))
{
    BussinnesLayer.Customer[] customers = Customer.GetCustomers(connection);
    Assert.IsTrue(customers.Length > 0, "Customer list length = 0");
}

App.Config contiene lo siguiente para la cadena de conexión de la entidad: (datos confidenciales eliminados)

IDataLoader loader = new Effort.DataLoaders.CsvDataLoader(Path.Combine(TestContext.DeploymentDirectory, "csvFiles"));
using (EntityConnection connection = Effort.EntityConnectionFactory.CreateTransient("name=Entities", loader))
{
    BussinnesLayer.Customer[] customers = Customer.GetCustomers(connection);
    Assert.IsTrue(customers.Length > 0, "Customer list length = 0");
}

Cualquier ayuda sería apreciada.

Respuesta aceptada

Me encontré con el mismo 'xmlReader' no es un error válido.

El problema resultó ser localizar el artefacto ssdl. Funcionó en pruebas que luego hicieron referencia a mis objetos de Entity Framework, pero solo crear una conexión por sí sola fallaría.

Esto me ayudó.

Intente modificar su línea App.Config para incluir el nombre del ensamblaje en lugar del *. Entonces, si su ensamblaje se llama Project1.EF, su línea App.Config se vería como:

<add name="Entities" connectionString="metadata=res://Project1.EF/Model.csdl|res://Project1.EF/Model.ssdl|res://Project1.EF/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=servername;initial catalog=database;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />




Licencia bajo: CC-BY-SA
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué