Тест единицы измерения: аргумент «xmlReader» недействителен


Вопрос

В настоящее время я пытаюсь выполнить модульный тест класса контекста Entity Framework с помощью рамки «Effort» ( http://effort.codeplex.com/wikipage?title=Tutorials&referringTitle=Home )

Если в моем модульном тестовом проекте есть два класса, в которых используются методы, то я получаю следующую ошибку:

Аргумент «xmlReader» недопустим. Должен быть предоставлен минимум один артефакт .ssdl.

Похоже, что наличие ошибки, связанной с использованием одного метода, использующего более одного класса, вызывает ошибку. Скорее всего, не все мои тестовые функции в одном классе.

Код проверки:

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 содержит следующее для строки подключения сущности: (удаленные конфиденциальные данные)

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

Любая помощь будет оценена по достоинству.

Принятый ответ

Я столкнулся с тем же «xmlReader», что неверная ошибка.

Проблема оказалась в обнаружении артефакта ssdl. Он работал в тестах, которые позже ссылались на мои объекты Entity Framework, но просто создание соединения само по себе потерпит неудачу.

Это помогло мне.

Попробуйте изменить строку App.Config, чтобы включить имя сборки вместо *. Поэтому, если ваша сборка называется Project1.EF, ваша строка App.Config будет выглядеть примерно так:

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




Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему