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

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

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

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

Edit 1:

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

30 ответов


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


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

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

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


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

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

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


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


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

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

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

Это подтвердили ошибку С dotCover.


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


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

чтобы определить ошибку, я начал 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)

обратите внимание, что это не приложение тестового проекта.конфиг!

A быстрый поиск примерно определили следующий файл в качестве виновника:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

(С помощью Visual Studio Professional 2017 v15.3.5 и ReSharper 2017.2.1).


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

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

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

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

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

[assembly: AssemblyCulture("")] 

в это:

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

вот оно что! Это то, что необъяснимо сломало мои модульные тесты.

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


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

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


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


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


в моем случае [Test] методы были просто private. Ш-А-я


вы недавно добавили зависимость от DLL? ... как я!--1-->

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

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


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

оказалось, что один из моих макетов от Moq не был инициализирован, только объявлен. Те инициализировали все тесты снова.


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

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

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


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


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

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

Я закончил удаление и повторное добавление одного из платформа активных решений, любой ЦП, в настройки Менеджер!--6-->. Таким образом, после сохранения изменений и повторного решения, все тесты снова начали бежать.

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


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

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

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


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

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

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

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


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


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

Install-Package NUnit3TestAdapter

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

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

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

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


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


У меня была такая же ошибка в VS2013 и Resharper9. Проблема была в том, что я забыл аннотировать метод тестирования с помощью [Test] :) Надеюсь, это поможет кому-нибудь


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

в частности *.dll, с которой я работал, была системой.Данные.Базы данных SQLite. Именно это *.dll жестко закодирован для 32-битной операции. Параметр "любой процессор" попытался загрузить его как 64 бит.


У меня была точно такая же проблема, никакие тесты не запускались в моем тестовом проекте. Как это случилось, у меня была неправильная конфигурация, выбранная при запуске тестов. Изменение его обратно в Debug исправило проблемы.

Debug configuration


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

Я не заметил этого в Visual Studio. Я заметил ошибку в Eventviewer.

чтобы решить эту проблему, я использовал bindingRedirect в приложение.конфигурация unittestproject для исправления dll-версии.


мое решение:

NUnit 3.2.0 имеет некоторые проблемы с Resharper-понижение до 2.6.4:

update-package nunit -version 2.6.4

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


в моем случае обнаружено, что testcasesource имеет другое количество аргументов, чем параметр в методе тестирования.

[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
    Assert.AreEqual( q, n / d );
}

static object[] DivideCases =
{
    new object[] { 12, 3 },
    new object[] { 12, 2 },
    new object[] { 12, 4 } 
};

здесь каждый массив объектов в DivideCases имеет два элемента, которые должны быть 3, поскольку метод DivideTest имеет 3 параметра.