Тестирование отказов не выполняется

Я пытаюсь начать писать модульные тесты в проекте. Сначала я написал CreateTest и попробовал. Этот тест прошел, и я начал писать другие тесты.

Теперь все мои тесты просто говорят: "Тест не запускается". Это происходит как при попытке запуска всех тестов сразу, так и при выполнении одного теста.

https://github.com/Requinard/OperationOctopus/tree/UnitTest

Все, что я нашел до сих пор, это люди, использующие NUnit. Мы используем стандартную среду тестирования microsoft, с повторным запуском тестов.

    [TestMethod]
    public void CreateTest()
    {
        Init.Initialize();
        // set up
        UserModel user = new UserModel();

        user.Address = "Testing Street 1";
        user.Email = "[email protected]";
        user.Level = 2;
        user.Password = "test";
        user.RfiDnumber = "00d0wad0aw";
        user.Telephonenumber = "0638212327";
        user.Username = "testcaseuser";

        Assert.IsTrue(user.Create(), "Cannot write user to database");

        test_user = user;
    }

    [TestMethod]
    public void ReadTest()
    {
        Init.Initialize();
        // set up
        UserModel user = getTestUser();

        Assert.AreEqual(user.Email, test_user.Email, "Reading returned an unexpected result");
    }

    [TestMethod]
    public void AlterTest()
    {
        Init.Initialize();
        UserModel user = getTestUser();

        user.Email = "[email protected]";

        Assert.IsTrue(user.Update(), "Failure during updating");

        user.Read();

        Assert.AreNotEqual(user.Email, test_user.Email);
    }

    [TestMethod]
    public void DestroyTest()
    {
        Init.Initialize();
        UserModel user = getTestUser();

        Assert.IsTrue(user.Destroy(), "Could not destroy user");
    }

Вышеуказанные тесты заставят resharper сказать: "Тест не запускается"

Я просто попробовал запустить тесты на своем ноутбуке. Они работали без каких-либо изменений в коде, и тест был завершен мгновенно. Это заставляет меня думать, что я имею дело с неисправным конфигом где-то.

Ответ 1

Кажется, что был плохой конфиг/где-то/. Я переустановил всю систему, затем VS2013 и R #. Тесты теперь отлично работают.

Ответ 2

Я думаю, что перезапуск всей системы может быть немного преждевременным. Я обнаружил, когда это произойдет, все, что вам нужно сделать, это перезапустить Resharper.

Я обычно делаю это из окна команд в Visual Studio, вам просто нужно вводить эти команды одну за другой

Resharper_Suspend
Resharper_Resume

это, как правило, решает проблему для меня и не требует повторного открытия решения.

Если это не удастся, вы можете очистить кэши. Информацию о том, как это сделать, можно найти здесь здесь.

вот как это сделать из меню VS

Ответ 3

Удостоверьтесь, что вы не делаете то, что делаете, и полностью забываете, что это решение находится в режиме выпуска, когда тестовый проект настроен только на режим отладки; -)

Ответ 4

В ReSharper 2017.3.1 была исправлена ошибка, исправленная в 2017.3.2: https://blog.jetbrains.com/dotnet/2018/02/01/resharper-ultimate-2017-3-2-bugfix/

Вы можете обновить, используя ReSharper> Help> Check for Updates.

Вы можете увидеть, если у вас была та же ошибка, включив журналы. Вот что у меня было:

--- EXCEPTION #2/2 [LoggerException]
Message = 'Passed version string '2.1.101' does not look to be a valid .net core sdk version'

И в конце концов:

|W| UnitTestLaunch | System.NullReferenceException: Object reference not set to an instance of an object.
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.NUnitServiceProvider.GetRunStrategy(IUnitTestElement element)
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.Elements.NUnitElementBase.GetRunStrategy(IHostProvider hostProvider)
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.CollectProjectsToBuild()
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.Run(CancellationToken token)
at JetBrains.ReSharper.UnitTestFramework.Launch.UnitTestLaunch.RunStage(Object stageObject)

Мой проект использует NET471, и я запускаю ReSharper 2017.3.1 в Visual Studio 15.6.27428.2005

Ответ 5

Это также случилось со мной и нашло причину здесь: http://www.henrikbrinch.dk/Blog/2012/02/15/Making-Resharper-testrunner-work-in-64-bit

Это исправление на самом деле суровое, и я сделал изменение конфигурации: VS2015 → Resharper → Options → Unit Testing → Архитектура платформы по умолчанию - принудительные тесты для запуска в 32-битном процессе

Надеюсь, это поможет вам

Ответ 6

Случилось со мной сегодня, и ни одно из вышеперечисленных предложений (очистка кеша, перезапуск VS, приостановка/возобновление resharper) не сработало.

Однако на вкладке "Сеансы модульного теста" в разделе "Ошибка" я увидел, что у меня есть исключение TypeLoadException, которое позволило мне точно определить проблему. enter image description here

Ответ 7

Я периодически сталкиваюсь с этим, потому что я работаю над проектом с несколькими ветвями и переключаюсь между ними, не закрывая Visual Studio. Это иногда может сбить с толку ReSharper, и у меня больше не будет опций NUnit в некоторых проектах.

В Visual Studio Community 2017 с ReSharper 2018.2 первое, что я пытаюсь, - это выгрузить проект, в котором недоступен тестовый запуск NUnit. Иногда это единственный необходимый шаг.

Затем я использую ReSharper-> Параметры → General-> "Очистить кеши", который требует перезагрузки VS.

Затем я снова выгружаю и загружаю плохо работающий проект.

Это решает проблему.