Метод испытания неубедителен: тест не был запущен. Ошибка?

У меня есть тестовый класс, и ниже я опубликовал образец теста из тестового класса

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

Когда я запускаю проект, я получаю следующий экран enter image description here

Я проверил ссылки, и в тестовом проекте есть ссылка на основной проект. Любая идея, почему тест не работает или говорит, что они были неубедительными?

Изменить 1:

Я видел сообщение здесь и изменил мою архитектуру процессора по умолчанию на X64, но он все еще не работает.

Ответ 1

Это была проблема Resharper. В параметрах Resharper- > Tools- > MSTEST я снял флажок Использовать Legacy Runner, и теперь он работает.

Ответ 2

На всякий случай ни один из вышеперечисленных параметров не работал для всех, кто исправил мой экземпляр этой ошибки, заметив поврежденную запись в моем App.Config из-за отсутствия пакета nuget в тестовом проекте.

Ответ 3

Для меня это было довольно неприятно, но я нашел решение для своего дела хотя бы:

Если ваш TestMethod является асинхронным, он не может быть недействительным. Он ДОЛЖЕН вернуть задачу.

Надеюсь, это поможет кому-то:)

Ответ 4

У меня была такая же проблема с resharper, и я исправил эту ошибку, изменив параметр:

Resharper = > Options = > Tools = > Тестирование модуля

Мне просто нужно было снять отметку с опции "Тестирование теневой копии"

Ответ 5

У меня была эта проблема, и она оказалась такой же, как эта проблема здесь. Этот ответ решил проблему для меня.

  1. Снимите флажок "Создавать только запускаемые проекты и зависимости при запуске" ("Параметры" → "Проекты и решения" → "Создать и запустить").
  2. В Configuration Manager убедитесь, что как в стартовом, так и в тестовом проекте установлен флажок "Сборка".

Во второй раз, когда я столкнулся с этой проблемой, это произошло из-за амперсанда в пути к файлу проекта, в котором находятся тесты. Он отлично работает с ReSharper, но не с dotCover. Удалите амперсанд из пути к файлу.

Это подтвержденная ошибка с dotCover.

Ответ 6

Для меня просто очистка и восстановление решения исправили его.

Ответ 7

Для меня проблема была в поврежденном XML файле настроек NUnit/ReSharper (из-за неожиданного дефицита питания).

Чтобы определить ошибку, я запустил Visual Studio с помощью этой команды:

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

Изучение файла выявило следующее исключение:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

Обратите внимание, что это НЕ тестовый проект app.config!

Быстрый поиск гугла выявил в качестве виновника следующий файл:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Он существовал, но был пуст. Удаление и перезапуск Visual Studio решили проблему.

(Использование Visual Studio Professional 2017 v15.3.5 и ReSharper 2017.2.1).

Ответ 8

Я просто исправил эту проблему. Однако ни одно из решений в этой теме не работало. Вот что я сделал...

Так как R # не рассказывал подробности о том, почему что-то не срабатывало, я решил попробовать встроенный тестовый бегун VS2013. Он испытал то же самое поведение, когда ни один из тестов не прошел. Однако, глядя в окне "Выход", у меня наконец появилось сообщение об ошибке:

Исключение произошло при вызове исполнителя 'executor://mstestadapter/v1': ссылка на объект не установлена ​​в экземпляр объекта.

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

Недавно я сделал несколько изменений в файле AssemblyInfo.cs при создании пакета NuGet. Одно из изменений, включая указание значения культуры сборки "en".

Я изменил это:

[assembly: AssemblyCulture("")] 

:

[assembly: AssemblyCulture("en")]`. 

Вот и все! Это то, что необъяснимо нарушило мои модульные тесты. Я все еще не понимаю, почему. Но по крайней мере все работает снова. После того, как я вернул это изменение (т.е. Вернул культуру к ""), мои тесты снова начали работать.

Надеюсь, что кто-то поможет там.

Ответ 9

Я столкнулся с этой проблемой в обновлении 3 против 2017 с Resharper Ultimate 2017.2

Перезапуск или перезагрузка компьютера не может помочь.

Я решил проблему, очистив кэш следующим образом:

    Resharper ->options-> Environment ->click the button 'Clear caches'

Обновить:

В правом верхнем углу тестового окна есть кнопка "ошибка" (я нахожу в Resharper 2018).

Если вы нажмете кнопку ошибки, появится сообщение об ошибке, которое может помочь в решении проблемы.

Чтобы отследить причину проблемы, запустите Visual Studio в режиме журнала. В vs 2017 запустите команду:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

Запустите тест.

Просмотрите файл журнала test_log.txt и поищите в нем ошибку.

Файл журнала - отличная помощь для поиска ошибки, которую вы можете устранить, или вы можете отправить проблему с файлом журнала в службу технической поддержки Resharper.

Ответ 10

В моем случае это была ошибка, которую я сделал при копировании строки подключения в app.config.. Я поместил его в тег configSections!

Пришло время понять, что... спасибо VS intellisense, хотя.. или это было resharper?

Ответ 11

В моем случае [Test] методы были просто private. S-ч-а-т-е

Ответ 12

Моя проблема была в том, что я только установил NUnit с nuget. Я не установил NUnit3TestAdapter, который также был необходим.

Install-Package NUnit3TestAdapter

Ответ 13

У меня была аналогичная проблема. VS 2010, С# CLR 2 Nunit 2.5.7, просто построить > чистое решение от VS помогло решить эту проблему

Ответ 14

В моем случае я создал метод асинхронного тестирования, который возвратил void. Возврат Task вместо void решил проблему.

Ответ 15

Вы недавно добавили какую-либо зависимость от DLL?... как я

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

Причина была очень глупой: я добавил только день за иждием к дополнительной внешней DLL в подпроекте, и основное приложение проекта действительно построено и работает правильно после изменения. Но мои модульные тесты находятся в дочернем проекте для основного приложения и, следовательно, слишком зависят от этого измененного субпроекта, в котором была вызвана DLL... однако, время выполнения тестового проекта не относится к главному приложению! Поэтому изменение сборки для копирования отсутствующей библиотеки DLL в тестовую среду выполнения устраняет проблему.

Ответ 16

Я использую VS2013, ReSharper 9.1 с расширением MSpec от ReSharper и Moq. Я испытал ту же "неубедительную" ошибку.

Оказалось, что мой Мок из Мока не был инициализирован, только объявлен. Инициализированы все тесты снова.

Ответ 17

В моем случае я получил эту ошибку из-за режима "Release", когда сборка проекта UnitTests была просто отключена. При переходе в режим "Отладка" это исправлено.

Неудивительно, что ReSharper не может ничего сказать, если он вообще не может найти библиотеку UnitTests. Серьезно, это позор;)

Надеюсь, что это поможет кому-то

Ответ 18

В моем случае тесты all в рамках некоторых тестовых проектов в рамках решения не запускались после добавления новых проектов. Использование VS 2017 с ReSharper 2017.1.2 здесь.

Прежде всего, убедитесь, что вы не тратите время на то, что ваша проблема связана с ReSharper. Легко предположить, что с ReSharper что-то не так, если вы используете свои функции тестирования модулей, включая Unit Test Explorer. Откройте тестовый проводник Visual Studio в меню "Тест" и попробуйте "Запустить все". Дополнительным преимуществом этого является то, что в окне вывода появится сообщение об ошибке, которое может указывать на вас в правильном направлении. Если вы заметите, что тот же набор тестов не запускаются, тогда можно с уверенностью предположить, что проблема связана с Visual Studio, а не с ReSharper.

Я закончил удаление и повторное добавление одной из активных платформ решений любого процессора в Configuration Manager. Таким образом, после сохранения изменений и повторного открытия решения все тесты снова запущены.

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

Ответ 19

Для тех, кто испытывает эту проблему для моего тестового проекта .NET Core 2.0 в Visual Studio 2017 Community (v15.3 3). У меня также была эта ошибка с помощью JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346 - есть ошибка, которую я опубликовал.

JetBrains рекомендовал создать новый тестовый проект с нуля, чтобы воспроизвести его. Когда я это сделал и получил тесты, работающие нормально, я нашел причину возникновения проблемы:

  • Удалите это из вашего файла *.csproj:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358} "

Когда я это сделал - тесты начали нормально работать.

Ответ 20

Я использую VS2010, NUnit 2.6.3 (хотя внутренне ReSharper говорит, что он использует 2.6.2?), ReSharper 7.7.1 и NCrunch 2.5.0.12 и запускался в тот же "... тест неубедительный".. "вещь с NUnit, но NCrunch сказал, что все в порядке. В течение большей части сегодняшнего дня NUnit и NCrunch находились в синхронизации, соглашаясь с тем, какие тесты были счастливы, а какие нужны рефакторингу, тогда что-то случилось, чего я до сих пор не понимаю, и некоторое время NCrunch сказал, что у меня были неудачные тесты (но через них они показали pass), а затем решили, что все они работают, и NUnit начал жаловаться на все мои тесты, кроме одного с тем же сообщением"..test isconconlusive... ", который я снова смог пропустить до прохода, хотя NUnit продолжил показать его как" неубедительное").

Я попробовал несколько из приведенных выше предложений безрезультатно, и, наконец, просто закрыл VS2010 и снова открыл решение. Voila, теперь все мои тесты снова счастливы, и NCrunch и NUnit снова сообщают о тех же результатах. К сожалению, я понятия не имею, что изменилось, чтобы заставить их выйти из синхронизации, но закрытие и повторное открытие VS2010, похоже, исправили его.

Возможно, кто-то еще столкнется с этим и сможет использовать это простое (если в конечном итоге неудовлетворенное, так как вы не знаете, что такое реальное исправление).

Ответ 21

У меня была такая же проблема. Преступник был внешней ссылкой, не совместимой с моими настройками сборки проекта. Чтобы решить проблему, я щелкнул правой кнопкой мыши по проекту- > properties- > build- > Platform Target- > change from Any CPU to x86.

Конкретный *.dll, с которым я работал, был System.Data.SQLite. Эта конкретная *.dll жестко запрограммирована для 32-разрядной операции. "Любой процессор" попытался загрузить его как 64 бит.

Ответ 22

Мое решение:

В NUnit 3.2.0 есть некоторые проблемы с Resharper - downgrade до 2.6.4:

update-package nunit -version 2.6.4

Ответ 23

В моем случае мой метод проверки был закрытым, я изменил его на публичный, и он сработал.

Ответ 24

Вызывается отсутствующим (не поврежденным) файлом App.Config. Добавление нового (Add → New Item... → файла конфигурации приложения) исправило его.

Ответ 25

У меня была такая же проблема. Это было связано с версией совместимости между NUnit 3.5 и Resharper 9.2, поскольку она была решена путем понижения с NUnit 3.5 до 2.6.4. Это сработало для меня. удачи.

Ответ 26

Если вы используете xUnit, я решил проблему установки пакета xunit.running.visualstudio. (в настоящее время используются xUnit 2.3.1 и VS17 Enterprise 15.3.5)

Ответ 27

У меня была та же проблема, чтобы запустить любой тест с использованием NUnit Framework. "Неокончательно: тест не запускается" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

Решено Добавление зависимости проекта в Microsoft.NET.Test.Sdk

Ответ 28

Для тех, кто спешит с выполнением тестов, мне нужно было использовать тестер VS 2017 для запуска тестов;

enter image description here

enter image description here

Ответ 29

У меня была такая же проблема, и ничего не помогло.

В конце концов я увидел, что у меня было несоответствие в моих пространствах имен проекта unit и проекта unit test.

Пространство имен моего проекта модуля - unit.project, а тестовый проект был назван unit.project.tests, но пространство имен по умолчанию для теста было таким же, как и единица, оба были unit.project.

Как только я обновил пространства имен для разных (одно пространство имен для каждого проекта), все сработало!

Ответ 30

Для меня один тест создал эту ошибку, и оказалось, что я непреднамеренно пропустил тест. В левой части экрана, где вы нажимаете, чтобы поместить точку останова, вы можете заметить, что ваш тест установлен на пропущен (там указывается значок Microsoft). Я включил тест, и ошибка исчезла.