Ответ 1
Это была проблема Resharper. В параметрах Resharper- > Tools- > MSTEST я снял флажок Использовать Legacy Runner, и теперь он работает.
У меня есть тестовый класс, и ниже я опубликовал образец теста из тестового класса
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());
}
}
}
Когда я запускаю проект, я получаю следующий экран
Я проверил ссылки, и в тестовом проекте есть ссылка на основной проект. Любая идея, почему тест не работает или говорит, что они были неубедительными?
Изменить 1:
Я видел сообщение здесь и изменил мою архитектуру процессора по умолчанию на X64, но он все еще не работает.
Это была проблема Resharper. В параметрах Resharper- > Tools- > MSTEST я снял флажок Использовать Legacy Runner, и теперь он работает.
На всякий случай ни один из вышеперечисленных параметров не работал для всех, кто исправил мой экземпляр этой ошибки, заметив поврежденную запись в моем App.Config из-за отсутствия пакета nuget в тестовом проекте.
Для меня это было довольно неприятно, но я нашел решение для своего дела хотя бы:
Если ваш TestMethod является асинхронным, он не может быть недействительным. Он ДОЛЖЕН вернуть задачу.
Надеюсь, это поможет кому-то:)
У меня была такая же проблема с resharper, и я исправил эту ошибку, изменив параметр:
Resharper = > Options = > Tools = > Тестирование модуля
Мне просто нужно было снять отметку с опции "Тестирование теневой копии"
У меня была эта проблема, и она оказалась такой же, как эта проблема здесь. Этот ответ решил проблему для меня.
- Снимите флажок "Создавать только запускаемые проекты и зависимости при запуске" ("Параметры" → "Проекты и решения" → "Создать и запустить").
- В Configuration Manager убедитесь, что как в стартовом, так и в тестовом проекте установлен флажок "Сборка".
Во второй раз, когда я столкнулся с этой проблемой, это произошло из-за амперсанда в пути к файлу проекта, в котором находятся тесты. Он отлично работает с ReSharper, но не с dotCover. Удалите амперсанд из пути к файлу.
Это подтвержденная ошибка с dotCover.
Для меня просто очистка и восстановление решения исправили его.
Для меня проблема была в поврежденном 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).
Я просто исправил эту проблему. Однако ни одно из решений в этой теме не работало. Вот что я сделал...
Так как R # не рассказывал подробности о том, почему что-то не срабатывало, я решил попробовать встроенный тестовый бегун VS2013. Он испытал то же самое поведение, когда ни один из тестов не прошел. Однако, глядя в окне "Выход", у меня наконец появилось сообщение об ошибке:
Исключение произошло при вызове исполнителя 'executor://mstestadapter/v1': ссылка на объект не установлена в экземпляр объекта.
Это привело меня к другому потоку на SO с решением. Поверь мне, я бы никогда не догадался, в чем проблема.
Недавно я сделал несколько изменений в файле AssemblyInfo.cs при создании пакета NuGet. Одно из изменений, включая указание значения культуры сборки "en".
Я изменил это:
[assembly: AssemblyCulture("")]
:
[assembly: AssemblyCulture("en")]`.
Вот и все! Это то, что необъяснимо нарушило мои модульные тесты. Я все еще не понимаю, почему. Но по крайней мере все работает снова. После того, как я вернул это изменение (т.е. Вернул культуру к ""), мои тесты снова начали работать.
Надеюсь, что кто-то поможет там.
Я столкнулся с этой проблемой в обновлении 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.
В моем случае это была ошибка, которую я сделал при копировании строки подключения в app.config.. Я поместил его в тег configSections!
Пришло время понять, что... спасибо VS intellisense, хотя.. или это было resharper?
В моем случае [Test]
методы были просто private
. S-ч-а-т-е
Моя проблема была в том, что я только установил NUnit с nuget. Я не установил NUnit3TestAdapter, который также был необходим.
Install-Package NUnit3TestAdapter
У меня была аналогичная проблема. VS 2010, С# CLR 2 Nunit 2.5.7, просто построить > чистое решение от VS помогло решить эту проблему
В моем случае я создал метод асинхронного тестирования, который возвратил void
. Возврат Task
вместо void
решил проблему.
Вы недавно добавили какую-либо зависимость от DLL?... как я
Я просто столкнулся с той же проблемой, и было очень раздражать, чтобы не получить никакой подсказки в окне тестового вывода или в другом месте.
Причина была очень глупой: я добавил только день за иждием к дополнительной внешней DLL в подпроекте, и основное приложение проекта действительно построено и работает правильно после изменения. Но мои модульные тесты находятся в дочернем проекте для основного приложения и, следовательно, слишком зависят от этого измененного субпроекта, в котором была вызвана DLL... однако, время выполнения тестового проекта не относится к главному приложению! Поэтому изменение сборки для копирования отсутствующей библиотеки DLL в тестовую среду выполнения устраняет проблему.
Я использую VS2013, ReSharper 9.1 с расширением MSpec от ReSharper и Moq. Я испытал ту же "неубедительную" ошибку.
Оказалось, что мой Мок из Мока не был инициализирован, только объявлен. Инициализированы все тесты снова.
В моем случае я получил эту ошибку из-за режима "Release", когда сборка проекта UnitTests была просто отключена. При переходе в режим "Отладка" это исправлено.
Неудивительно, что ReSharper не может ничего сказать, если он вообще не может найти библиотеку UnitTests. Серьезно, это позор;)
Надеюсь, что это поможет кому-то
В моем случае тесты all в рамках некоторых тестовых проектов в рамках решения не запускались после добавления новых проектов. Использование VS 2017 с ReSharper 2017.1.2 здесь.
Прежде всего, убедитесь, что вы не тратите время на то, что ваша проблема связана с ReSharper. Легко предположить, что с ReSharper что-то не так, если вы используете свои функции тестирования модулей, включая Unit Test Explorer. Откройте тестовый проводник Visual Studio в меню "Тест" и попробуйте "Запустить все". Дополнительным преимуществом этого является то, что в окне вывода появится сообщение об ошибке, которое может указывать на вас в правильном направлении. Если вы заметите, что тот же набор тестов не запускаются, тогда можно с уверенностью предположить, что проблема связана с Visual Studio, а не с ReSharper.
Я закончил удаление и повторное добавление одной из активных платформ решений любого процессора в Configuration Manager. Таким образом, после сохранения изменений и повторного открытия решения все тесты снова запущены.
Я считаю, что в файл решения произошла неожиданная запись конфигурации, когда я добавил новые проекты и, используя воссоздание одной из платформ, исправил ее. Я старался изо всех сил, но было трудно сказать, что изменилось, чтобы вызвать проблему.
Для тех, кто испытывает эту проблему для моего тестового проекта .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}
"
Когда я это сделал - тесты начали нормально работать.
Я использую 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, похоже, исправили его.
Возможно, кто-то еще столкнется с этим и сможет использовать это простое (если в конечном итоге неудовлетворенное, так как вы не знаете, что такое реальное исправление).
У меня была такая же проблема. Преступник был внешней ссылкой, не совместимой с моими настройками сборки проекта. Чтобы решить проблему, я щелкнул правой кнопкой мыши по проекту- > properties- > build- > Platform Target- > change from Any CPU to x86.
Конкретный *.dll, с которым я работал, был System.Data.SQLite. Эта конкретная *.dll жестко запрограммирована для 32-разрядной операции. "Любой процессор" попытался загрузить его как 64 бит.
Мое решение:
В NUnit 3.2.0 есть некоторые проблемы с Resharper - downgrade до 2.6.4:
update-package nunit -version 2.6.4
В моем случае мой метод проверки был закрытым, я изменил его на публичный, и он сработал.
Вызывается отсутствующим (не поврежденным) файлом App.Config. Добавление нового (Add → New Item... → файла конфигурации приложения) исправило его.
У меня была такая же проблема. Это было связано с версией совместимости между NUnit 3.5 и Resharper 9.2, поскольку она была решена путем понижения с NUnit 3.5 до 2.6.4. Это сработало для меня. удачи.
Если вы используете xUnit
, я решил проблему установки пакета xunit.running.visualstudio
.
(в настоящее время используются xUnit 2.3.1
и VS17 Enterprise 15.3.5
)
У меня была та же проблема, чтобы запустить любой тест с использованием NUnit Framework. "Неокончательно: тест не запускается" Visual Studio 2017 15.5.6
ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130
Решено Добавление зависимости проекта в Microsoft.NET.Test.Sdk
Для тех, кто спешит с выполнением тестов, мне нужно было использовать тестер VS 2017 для запуска тестов;
У меня была такая же проблема, и ничего не помогло.
В конце концов я увидел, что у меня было несоответствие в моих пространствах имен проекта unit и проекта unit test.
Пространство имен моего проекта модуля - unit.project, а тестовый проект был назван unit.project.tests, но пространство имен по умолчанию для теста было таким же, как и единица, оба были unit.project.
Как только я обновил пространства имен для разных (одно пространство имен для каждого проекта), все сработало!
Для меня один тест создал эту ошибку, и оказалось, что я непреднамеренно пропустил тест. В левой части экрана, где вы нажимаете, чтобы поместить точку останова, вы можете заметить, что ваш тест установлен на пропущен (там указывается значок Microsoft). Я включил тест, и ошибка исчезла.