Test d'unité d'effort: l'argument 'xmlReader' n'est pas valide

c# effort unit-testing

Question

J'essaie actuellement de tester unitairement une classe de contexte de Entity Framework avec le cadre "Effort" ( http://effort.codeplex.com/wikipage?title=Tutorials&referringTitle=Home ).

Si mon projet de test unitaire a deux classes contenant des méthodes qui utilisent des efforts, j'obtiens l'erreur suivante:

L'argument 'xmlReader' n'est pas valide. Un artefact .ssdl au minimum doit être fourni.

Il semble que ce soit le fait d'avoir la méthode "one one" qui utilise l'effort de plusieurs classes provoque l'erreur. Je préfère ne pas avoir toutes mes fonctions de test unitaire dans une classe.

Code le test est en cours d'exécution:

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 contient les éléments suivants pour la chaîne de connexion d'entité: (données sensibles supprimées)

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");
}

Toute aide serait appréciée.

Réponse acceptée

J'ai rencontré le même 'xmlReader' n'est pas une erreur valide.

Le problème s'est avéré être la localisation de l'artefact ssdl. Cela a fonctionné dans des tests qui ont ensuite référencé mes objets Entity Framework, mais la création d'une connexion par elle-même échouerait.

Cela m'a aidé.

Essayez de modifier votre ligne App.Config pour inclure le nom de l’assemblage au lieu de *. Ainsi, si votre assemblage s'appelle Project1.EF, votre ligne App.Config ressemblera à quelque chose comme:

<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" />



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi