Модульный тест C# DataDriven выдает ошибку при использовании LINQ

Я использую microsoft.visualstudio.testtools 10.0 и EntityFramework 6.0,

  1. У меня есть метод «validateAlreadyEnroll», который выполняет запрос linq.
  2. У меня есть модульный тест «testAlreadyEnroll», который вызывает » validateAlreadyEnroll»
  3. testalreadyenroll завершается ошибкой или завершается успешно, если я комментирую запрос linq, иначе он завершает работу.
  4. Есть приложение.конфигурация, которая задает тест, управляемый данными

Это проблема с версиями? Пожалуйста помочь.

Основной метод:

public static bool validateAlreadyEnroll(int sectionid, int personid, ref string extramessage, ref validationResult vr)
    {

       int n = (from e in db.Enrollments where e.SectionID == sectionid && e.EnrolledPersonID == personid select e).ToList().Count();
        if(n == 0){
            return false;
        }

        var statusid2 = db.Database.SqlQuery<resultStatusID>("select top 1 EnrollmentStatusID from Enrollment where SectionID = " + sectionid + " and EnrolledPersonID = " + personid + " order by EnrollmentID desc").ToList();
        if (statusid2[0].EnrollmentStatusID == CANCELREQUEST) {
            return false;
        } 

        return true;
    }

модульный тест:

[TestMethod]
    [DataSource("DataSource3")]
    [DeploymentItem("Regi.Service.Teststests.xlsx")]
    public void testAlreadyEnroll()
    {
        int n;
        int sectionid;
        if (Int32.TryParse(TestContext.DataRow["sectionid"].ToString(), out n))
        {
            sectionid = Int32.Parse(TestContext.DataRow["sectionid"].ToString());
        }
        else
        {
            sectionid = 0;
        }

        int personid;
        if (Int32.TryParse(TestContext.DataRow["personid"].ToString(), out n))
        {
            personid = Int32.Parse(TestContext.DataRow["personid"].ToString());
        }
        else
        {
            personid = 0;
        }

        bool answer = Helper.validateAlreadyEnroll(sectionid, personid, ref msg, ref vr);
        bool result = Convert.ToBoolean(TestContext.DataRow["result"].ToString());
        Assert.AreEqual(answer, result, "Failure");
    }

Часть приложения.конфигурационный файл

Это ошибка, которую я получаю

2 ответа

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

    Кроме того, если вы хотите сделать тестовую разработку правильно, у вас должно быть гораздо меньше тестовых случаев. Например, тот, который просто проверяет БД.Регистрации.Count () > 0 для источника данных.
    Это позволит быстро выявить проблемы.

    // Старое, неправильное предложение:
    Но я думаю, что оператор Linq не знает ‘& & ‘ как логический операнд. Вместо этого используйте «и».

  2. Наконец-то!

    Необходим мой конструктор DbContext: var ensureDLLIsCopied = System.Данные.Сущность.SqlServer.SqlProviderServices.Экземпляр; но и «имя» не было указано правильно, также я по сравнению со старой версией и это.Конфигурация.LazyLoadingEnabled = false; отсутствует, чтобы объяснить лучше я нашел эту запись: Buildserver не может найти Entity Framework SQL Provider