Тести не запущені в Test Explorer


146

Зараз я працюю над рішенням, яке наразі має 32 одиниці тестування. Я працював із тестовим бігуном resharper - який прекрасно працює. Всі тести працюють, усі тести показують правильний результат тесту. Тепер колега сказав мені, що тести не виконуються на його машині, використовуючи тест-випробувач Visual Studio. Вони не працюють ні на моїй машині, тому я можу виключити деякі локальні відсутні файли чи щось.

Тестовий провідник показує всі тести одиниць, але після натискання на "Виконати все" всі тести стають сірими і не показують результатів тестового запуску:

введіть тут опис зображення

  • Усі тестові класи є загальнодоступними
  • У всіх тестових класах [TestClass]атрибут оголошено
  • Усі методи тестування використовують [TestMethod]атрибут
  • І код продуктивності, і тестові проекти орієнтуються на .NET 3.5.
  • Я вже намагався чистої збірка мого рішення, і / або видалити всі obj, bin, Debugі Releaseпапки

Я б оцінив будь-які підказки, які могли б викликати таку поведінку.


3
Оновіть свій ReSharper. Зверніться до цього stackoverflow.com/questions/16011775 / ...
kmhigashioka

18
Не було б чудово, якби VS сказав, чому тест не проводиться? Невідповідна цільова платформа, відсутній тестовий адаптер, ... :(
Bernhard Hofmann

1
Де згадується, що вони використовують ReSharper?
Олексій 75

5
@BernhardHofmann У мене виникла така проблема, як зараз, і виявляється, що VS виплюнув кілька повідомлень про помилки у програмі Output> Tests. Важливо. Розчаровує те, що VS не робить їх більш помітними, але це місце, щоб подивитися в такій ситуації.
JLRishe

2
Вас усіх може зацікавити запрошення цього запиту на функцію: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Відповіді:


157

Якщо ваші проекти не всі AnyCpu, ви також можете перевірити, чи відповідають наступні 2 налаштування:

  1. [Тестовий проект правою кнопкою миші] -> властивості -> Збірка -> Ціль платформи - наприклад x64

  2. [Головне меню] -> Тест -> Налаштування тестування -> Архітектура процесора за замовчуванням -> X64

Я виявив, що коли вони не відповідають моєму тестовому проекту, мовчки не вдасться запуститись.


5
ця відповідь є шиєю та шиєю, "увімкніть і вимкніть знову", тому, якщо це працює для вас, будь-ласка, зверніть заявку.
lukkea

це вирішило мої проблеми (перехід зі змішаних платформ на anycpu)
Marcel Studer

1
переконайтеся, що ваші тестові проекти не netstandard2.0, а netcoreapp2.2
user2033412

4
Працювали. Я дійсно з VS хотів би, ви знаєте, чітке попередження або повідомлення про помилку чи щось.
Anon

9
Версія VS2019: Головне меню -> Тест -> Архітектура процесора для проектів AnyCPU -> X64.
StackOverthrow

64

У мене була така ж проблема в VS 2017. У моєму випадку вона вирішилася перезапуском VS.


7
мій попередній коментар, чому я дав цю заяву, був видалений, тому я стану трохи зрозумілішим. Це не є рішенням проблеми; це дуже тимчасове виправлення, яке не вирішує основну проблему. Я не думаю, що ТАК повинен бути місцем, до якого люди повинні приходити, щоб йому сказали "вимкніть і знову", тобто знання, яке слід засвоїти, перш ніж потрапити сюди. Дивіться відповідь Джозефа Сімпсона для рішення.
lukkea

5
@lukkea я підписався на відповідь Джозефа Сімпсона і підтвердив, що всі мої проекти де AnyCpu. У мене ще була проблема, описана тут. Для мене просто перезапуск VS допоміг. Це вже не перший раз, коли VS2012 проводить подібні хитки (і не тільки на моїй машині). Я згоден з вами, що це не дуже вдале рішення, але якщо в проекті немає нічого поганого, це може бути єдиною допомогою. Слід перевірити, чи не допомагає чистка реконструкції.
Саша

2
Якби тільки "ввімкнення та вимкнення знову" виправить усі мої проблеми. Все ще дивно, скільки це виправляє. Трохи соромно, що мені довелося перейти до stackoverflow, щоб мені нагадували про це, але я вважав цю відповідь корисною.
Річард Гарсіде

2
Іноді візуальна студія - основна проблема, а перезапуск - це рішення
JSON

1
Досі працює для VS2019 ....
Трональд

44

Якщо ви використовуєте NUnit, а не MSTest, тоді вам знадобиться розширення тестового адаптера NUnit для Visual Studio 2012/2013.


9
Це допомогло мені зрозуміти, що мені потрібно встановити "Тестовий адаптер NUnit 3": marketplace.visualstudio.com/…
Westerlund.io

10
У VS 2019 працював для мене, щоб встановити адаптер від менеджера пакунків nuget.org/packages/NUnit3TestAdapter
майлон

Відповідно до цієї сторінки вам також потрібно встановити Microsoft.NET.Test.Sdkз Nuget
BlueRaja - Danny Pflughoeft

У VS 2017 я встановив тестовий адаптер Extension Nunit 3, і він працював.
Боб Локерсе

У VS 2019 я також встановив тестовий адаптер Extension Nunit 3, і він працював. Одна примітка: мені також потрібно було оновити Visual Studio.
Боб Локерсе

42

Мені довелося змінити методи тестування на асинхронізацію, щоб повернути Завдання замість недійсного.

Потім тести були активними та запускаються в Test Explorer.


1
Немає можливості чекати, коли закінчиться метод асинхронізації. Асинхронна порожнеча - це "вогонь і забудь". Тому їх не можна перевірити.
Кетобомб

Шкільне обличчя, яке я робив, коли читав це, відлунювалося над землею ... Дякую, що вказав на мою дурість. Це працювало для мене. Upvoted
JP Chapleau

Хоча подано під категорією "no duh". Я хотів би, щоб це могло стати більш голосовим, оскільки це дуже очевидно, що тип повернення повинен бути завданням, але легко забути (тому що, здається, жоден інший тест у світі не повертає нічого, окрім недійсного), і посилає вас в кролячу дірку для фіксації вашого пристрою тестова конфігурація, коли немає фактичної проблеми з конфігурацією. Дуже хочеться, щоб це просто спричинило компілятор або, щонайменше, кидає помилку виконання.
pat8719

2
@ pat8719, звучить як гарна ідея для аналізатора коду. Їм не надто важко писати. Я просто виписав факт, що робив ксуніт, async void Foo()і їхні аналізатори не скаржилися, але вони, безумовно, могли додати той, який би. куб .: @bradwilson
benmccallum

22

Перевірте, на яку основу написані тести (наприклад, nunit, xunit, VS test тощо) та переконайтеся, що встановлено правильне розширення тестового адаптера / бігуна.

Для мене відсутній тестовий адаптер NUnit 3, і я підтвердив необхідний номер версії, переглянувши версію залежності nunit.framework (виберіть .dll у дереві Dependency в Solution Explorer і натисніть F4, щоб відкрити вікно властивостей).


2
Примітка до себе: Мій оригінальний MSTest proj ref'd Microsoft.VisualStudio.QualityTools.UnitTestFramework(не впевнений, яка версія). Вирішені проблеми, коли метод не запускається (або знайдений), видаливши цей посилання та встановивши останню (v2.1.0) MSTest.TestAdapter (та Framework)
Адам Кокс,

@AdamCox Microsoft.VisualStudio.TestTools.UnitTestingзастаріло? У мене були деякі тести, які використовували це, і раптом кинули працювати, як було зазначено вище, після повторного додавання посилань на проект, від якого вони залежали.
ebyrob

@ebyrob, відповідь Атанасіоса нижче може бути доречним. Здається, він не тільки повинен був оновити / оновити пакети MSTest. *, Але й додати деякі залежності та виправити деякі переадресації прив’язки. Перевірте свої попередження.
benmccallum

16

TLDR: Оновіть тестові пакети, загляньте у вихідну -> тестову консоль

Я боровся з цим протягом півтора днів. так ось що я зробив, щоб вирішити це:

Симптоми

  1. 5 одиничних тестових проектів, всі відкриті в TestExplorer
  2. 2 з 5 виконані правильно
  3. 3 заявляючи, що не бігати зовсім
  4. Проблема почалася після оновлення .net Framework

Розслідування

Оскільки всі пакети були оновлені під час оновлення .net Framework, я почав із відмінностей між робочими та не працюючими проектами. Перша підказка полягала в тому, що всі 3 проекти використовували: MSTest.TestAdapter та MSTest.TestFramework

Природно, я зайшов у консоль -> вихідна консоль -> тестовий випадок у VS 2019 та подивився вихід. Нічого корисного там немає.

Крок перший із рішення : Оновіть MSTest.TestAdapter і MSTest.TestFramework до версії 2.0.0

Крок другий з рішення : Тепер консоль виводу -> Тестовий вихідний вихід почав показувати один за одним, відсутні пакети та неправильні переадресації прив’язки

Крок третій із рішення : Вручну додайте відсутні пакети. Для мене це були

  1. System.Runtime.Extentions
  2. Система.Рефлексія
  3. Можливо, ще щось, чого мені не вистачає

Крок 4 рішення : Видалено / виправлено несекретні переадресації прив’язки.

Сподіваюся, це допоможе комусь іншому.


Ти врятував мене в той півтора дня! Я оновив проект версією 4,5 FW і спробував видалити всі непотрібні речі з пакетів і опинився в цій ситуації. Дякую!
Numan

Я думаю, я переживав щось подібне. Врешті-решт я просто створив проект з нуля. Мабуть, у файлі * .csproj є рядок, який встановлює ToolsVersionі натрапляє на міну все переплутало. Все, що я можу сказати, - це "остерігайтеся покупця" для тестування модулів MS та будьте готові замінити ваші файли * .csproj за мить, цей матеріал щільно інтегрований і дуже залежить від версії.
ebyrob

Дякую, хоч це не було безпосередньо моєю проблемою, порада перевірити вихід консолі показала мені помилку (у методі DBContext Dispose була помилка), яка заважала запускати мої тести.
Ієн Карлін


11

Виникла така ж проблема після чистої установки VS 2019. Тести знайдені, але не виконуються з "Несподіваною помилкою". Виправлено встановленням x64 замість x86, який був обраний за замовчуванням.

введіть тут опис зображення


4
Це було для мене виправленням, разом із перезапуском VS та видаленням папки .vs. Дякую.
Donald.Record

Я не можу повірити, що це все-таки проблема ... Сподіваємось, Microsoft випустила якесь попередження для цього класичного забиття в один момент.
Гійом Лахай

10

Я виявив, що в проекті він не посилається на збірку Microsoft.VisualStudio.QualityTools.UnitTestFramework . Натомість він посилався на Microsoft.VisualStudio.TestPlatform.TestFramework та Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions . Коли я видалив ці дві посилання та додав посилання на збірку Microsoft.VisualStudio.QualityTools.UnitTestFramework, тести, які раніше були позначені синім знаком оклику, раптом активізувались і почали працювати.

Тести блоку не виконуються при неправильній збірці

При правильній збірці тести виконуються


3
Після переходу з .NET Framework 4.6.2 на .NET Framework 4.7.2 мої тести більше не працювали. Після годин спроб для мене спрацювало лише це рішення.
Ерік Бержерон

Після переходу з .NET Framework 4.6.2 на .NET Framework 4.7.2 - мені довелося видалити всі переадресації прив’язки в app.config
bkwdesign

10

У мене була ця проблема, і для мене це було викликано наявністю декількох тестових проектів з різними версіями:

  • MSTest.TestAdapter
  • MSTest.TestFramework

Консолідація пакетів «nuget» для проектів, щоб вони були однаковими, вирішили проблему для мене.


1
Ця відповідь допомогла мені знайти подібну причину. У моєму випадку деякі тестові проекти мали посилання на Microsoft.VisualStudio.TestPlatform.TestFramework (і не запускалися), а інші мали посилання на Microsoft.VisualStudio.QualaityTools.UnitTestFramework (які були запущеними проектами).
молодший

8

У моєму випадку це було тому, що в одному тестовому проекті в моєму рішенні встановлені нульові пакети MSTest.TestFramework та MSTest.TestAdapter, а інші - не. Ці пакети, очевидно, не вимагали для запуску тестів, поки один проект у рішенні не встановив їх.

Виправлено проблему, встановивши ці пакети на тестових проектах, у яких вони відсутні.


У моєму випадку це якраз навпаки: будь-який тестовий проект одиниці, який має найменші Nget пакети, не запускатиметься там, де це роблять інші. Дивно.
Палла З

Вирішено : у мене файл .testsettings. Для пакетів MSTest потрібен файл .runsettings. Ось чому тести не працюють.
Палла З



6

введіть тут опис зображення

Налаштування архітектури процесора для проектів AnyCPU у Test Explorer виправило мою проблему! Дивіться знімок екрана вище.


Велике спасибі! Це мені допомогло =)
Олександр Братцев

4

У моєму випадку у мене був async voidметод, і я його замінив async Task, тому тестовий запуск, як я очікував:

    [TestMethod]
    public async  void SendTest(){}

замінити :

    [TestMethod]
    public async  Task SendTest(){}

1
Це було моє питання
Кайл Делані

3

У мене були такі ж симптоми.

Переконайтеся, що встановлено правильне розширення Visual Studio через Інструменти - розширення та оновлення. У моєму випадку мені довелося встановити XUnit і Specflow з параметра Інтернет.

Потім очистіть розчин і відновіть його.

Якщо це все-таки не допомагає, очистіть тимчасовий каталог (знайдіть% temp% у пошуку в меню «Пуск» та видаліть увесь вміст у Temp)

А потім нарешті спробуйте видалити Resharper, що остаточно вирішило мою проблему.


4
Видалити Resharper ?! Я не думаю, що це рішення ^^
Стів Ракебрандт

2

Ось тестовий проект не був позначений для побудови:

Збірка -> Менеджер конфігурацій ... -> Перевірте збірку свого тестового проекту


2

Оскільки я потрапив сюди з такою помилкою, я публікую свою проблему / рішення:

Симптоми:

  • Працюють не всі тести, але вони не залежать від проекту, лише деякі з них були виконані.
  • Усі страчені були зеленими.
  • Технологічний стек: ядро ​​dotnet / XUnit / FluentAssertions
  • Усі тести виявлені та оновлені, якщо вони змінилися.
  • Вибравши або виконавши "Не запущені тести" кілька разів, вони могли бути виконані.

Проблема:

У коді сталася помилка, яка кидає виняток всередині іншого потоку. Усі тестові твердження пройшли, але це скасувало виконання тесту. Я міг бачити помилку в "Тестовому виході" (NullException).


+1 Я спробував налагодити конкретний тест. Коли я нарешті пройшов інший, простіший тест, то міг налагодити конкретний тест. Ця відповідь змусила мене спробувати це.
Halvard

2

У мене були ті ж самі симптоми, в моєму випадку проблема була основною версією SDK для dotnet .

Проекти орієнтовані на 2.2, і він зміг створити за допомогою 3.0. Після встановлення новітньої версії 2.2 SDK їх вдалося запустити.


2

Ви можете переглянути помилку виводу вашого тестового бігуна, відкривши панель вихідних даних (перегляд -> вихід) та вибравши "тести" зі спадного меню "Показати вихід з"

показати вихід із


Крім того, якщо у вас встановлений Resharper, ви можете відкрити тестовий файл та навести курсор миші на тестовий круг поруч із тестом, щоб отримати додаткову інформацію про помилку

Вихідний переривник

Клацнувши, ви перейдете до вікна з більш детальною інформацією. Ви також можете відкрити це вікно, перейшовши до Розширення -> Переробник -> Windows -> Результати дослідження тестування блоку.

Дослідження тестового блоку Resharper


2

Спробували багато варіантів з Visual Studio 2019 Версія 16.4.6 і Microsoft.VisualStudio.TestTools.UnitTesting, але наразі єдиним способом успішного запуску тестів було виклик наступної команди в консолі

dotnet test

Тести виявлені в Test Explorer, але результат - "Не запустити".

Оновлення Visual Studio не допомогло.

Вирішили проблему з "Жоден тест не відповідає вказаному фільтру тестових примірників FullyQualifiedName", запустивши оновлення до останньої версії для наступних пакетів:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

Для мене рішенням було змінити параметри тестування блоку Resharper Unit "Архітектура платформи за замовчуванням" на "x64"

введіть тут опис зображення


Це вирішило мою проблему з проектом .NET Core 3.1, який відмовився виконувати тести в Test Explorer. Ніщо інше не виправить це, окрім цього.
J_L

1

Для мене перезапуск VS2017 не працював. Мені довелося очистити sln, тоді я знайшов файл із тестами, який не запускався та запускав лише цей файл. Після цього я все запустив, і це знову нормально працювало.


1

У мене були різні версії пакунків NUnit (3.11.0) та NunitTestAdapter (3.12.0). Коли я оновив NUnit до 3.12.0, Visual Studio проводив тести.


1

У моєму випадку вона працювала над оновленням MSTest пакетів нуд. Може відтворити цю проблему навіть на пустому проекті MSTest та оновленні відпрацьованих пакетів.


1

Для мене наявність властивості під назвою TestContext в базовому класі викликала таку поведінку. Наприклад:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

Я можу сказати з ваших атрибутів, що ви використовуєте MSTest. У мене була подібна проблема: мої тести відображалися в Тестовому Провіднику, але коли я спробував би їх запустити (вибираючи «Запустити все» або окремо вибравши їх), вони не будуть.

Моя проблема полягала в тому, що я створив блок тестового проекту вручну з порожнього проекту .NET Standard Class Library. Я встановив MSTest.TestFrameworkпакет NuGet, але не MSTest.TestAdapterпакет. Як тільки я встановив адаптерний пакет, вони бігли, як очікувалося.

Здається, це очевидно в ретроспективі, але коли ви створюєте блок-тестові проекти з шаблону, ви приймаєте ці речі як належне.


1

Варто зазначити, що інколи файли NUnit Test Adapter пошкоджуються у папці користувача C: \ Users [Користувач] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll в Windows 10 і що змушує тест-Explorer перестати працювати як слід.


1

Я використовую VS2019 з .Net 4.7. Я встановив розширення NUnit v3 і змінив налаштування тесту на використання X64. Мій тестовий проект модуля - будь-який процесор (працював би, якби я змінив його на x64) Тепер я можу налагоджувати код.


1

Ця проблема також спостерігається, коли запущений тестовий метод кидає StackOverflowException , завдяки чому тестовий бігун перериває тестовий запуск, в результаті чого виходить результат 0 tests run.

Щоб знайти винуватця та вирішити його, поставте крапку на початку методів оформлення TestInitialize та TestMethod , запустіть тестовий блок в режимі налагодження, продовжуйте переходити (F10), поки не буде викинуто виняток.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.