2016-09-04 5 views
0

У меня есть набор тестов MsTest и NUnit, которые выполняются в TFS 2015 с использованием этапа тестирования VS. Я использую NUnit Test Adapter 3.4.1 для запуска тестов в агенте сборки.VS Шаг теста на TFS после прохождения всех тестов

В конце концов, несмотря на то, что испытания проходят, Nunit, похоже, каркается, и шаг сборки не выполняется с этими двумя ошибками.

2016-09-04T09:59:44.7209787Z ##[error]Error: Exception NUnit.Engine.NUnitEngineException, Exception thrown executing tests 
2016-09-04T09:59:44.7209787Z ##[error] 
2016-09-04T09:59:44.7209787Z ##[error]Error: Exception encountered unloading AppDomain 
2016-09-04T09:59:44.7209787Z ##[error] 
2016-09-04T09:59:44.7209787Z Information: NUnit Adapter 3.4.1.0: Test execution complete 
2016-09-04T09:59:44.8615975Z Results File: C:\agent\_work2\1\TestResults\SRV-BLD1 2016-09-04 01_22_45.trx 
2016-09-04T09:59:44.8615975Z Total tests: 139. Passed: 134. Failed: 0. Skipped: 5. 

Я проверил, что есть на самом деле 139 тестов в наборе, и 5 установлены игнорировать (2 являются MSTest и 3 являются NUnit).

Я не уверен, есть ли место, где можно получить более подробное объяснение ошибки. Поиск на этом сайте и в google, по-видимому, предполагает, что NUnit.Engine.NUnitEngineException связано с обнаружением теста (например, here и here), но мои тесты обнаруживаются, поэтому я не уверен, что это связано (довольно новичок в NUnit, поэтому не уверен в многом).

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

В TFS на этом шаге нет никакой конфигурации, только что он включен и путь к DLL.

Кто-нибудь знает, что вызывает ошибки (которые я предполагаю, вызывают сбои сборки)? В качестве альтернативы, какими должны быть следующие шаги для получения более точного/подробного стека ошибок для исследования проблемы?

В качестве примечания, я увидел this SO ответ, в котором говорится следующее:

MSTest.exe возвратил код выхода 1 о том, что не все тесты прошли .

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

Благодарим за помощь.

UPDATE

Как предлагается ниже, я попытался запустить это из IDE непосредственно, и получил этот вывод (папки отредактированный)

------ Discover test started ------ 
NUnit Adapter 3.4.1.0: Test discovery starting 

NUnit Adapter 3.4.1.0: Test discovery complete 
========== Discover test finished: 139 found (0:00:00.8820879) ========== 
------ Run test started ------ 
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain. This can happen if the test(s) started a thread but did not stop it. Make sure that all the threads started by the test(s) are stopped before completion. 
NUnit Adapter 3.4.1.0: Test execution started 
Running all tests in C:\agent\_work2\1\s\codePorject\bin\Debug\codeProjectTests.dll 
NUnit3TestExecutor converted 37 of 37 NUnit test cases 
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain. This can happen if the test(s) started a thread but did not stop it. Make sure that all the threads started by the test(s) are stopped before completion. 
Exception NUnit.Engine.NUnitEngineException, Exception thrown executing tests 
Exception encountered unloading AppDomain 
NUnit Adapter 3.4.1.0: Test execution complete 
========== Run test finished: 139 run (1:20:10.3290294) ========== 

Я нашел подобный XUnit issue открыт, но он, похоже, не имеет решения.

This Решение StackOverflow предлагает использовать таймер сна, поэтому я могу попробовать это.

+0

Вы восстанавливаете Nunit и Nunit3TestAdapter от Nuget? –

+0

Нет, я их установил на агенте сборки. Используемая версия - 3.4.1 – Kolichikov

+0

Можете ли вы создать образец тестового кода модуля, который может воспроизвести эту проблему, а затем поделиться ею? –

ответ

0

В конце концов, это выглядит как нечто вроде состояния гонки между окнами браузера Firefox и nUnit. В моем коде очистки я убиваю процессы firefox и iisexpress. Добавление вызова во сне устранило проблему:

public static void AssemblyCleanup() 
{ 
    foreach (var process in Process.GetProcessesByName("firefox")) process.Kill(); 
    foreach (var process in Process.GetProcessesByName("iisexpress")) process.Kill(); 
    System.Threading.Thread.Sleep(5000); 
} 
0

NUnitEngineException - это то, что он говорит: исключение, обнаруженное двигателем. Это может быть вызвано многими вещами, и сообщение указывает на проблему. В вашем случае в сообщении говорится: «Исключено обнаружение разгрузки AppDomain», что означает ... ну, что он говорит.

Адаптер тестирования захватывает и обрабатывает исключение, создавая сообщение, которое вы видите. Существует некоторое указание на то, что TFS также видит исключение и не выполняет тестовый запуск.Если бы вы запускали это под VS IDE, я думаю, вы увидите сообщение от адаптера, но запуск не подведет. Об этом говорит проблема адаптера NUnit3 Test Adapter, но неясно, находится ли решение внутри адаптера или проблема с TFS.

Если вы попытаетесь сделать это под IDE, я надеюсь, что вы также опубликуете текст окна вывода из этого прогона.

+0

Должен ли я искать в результатах - тесты, когда я запускаю его в среде IDE? Я получаю N3ExecutionAgent, он запускает тесты, но сообщений о каких-либо ошибках нет. – Kolichikov

+0

Если вы не заметили сообщение об ошибке разгрузки AppDomain, это может произойти только периодически. Адаптер определенно отображает сообщение независимо от того, где он работает. Убедитесь, что вы используете одну и ту же версию адаптера в каждом случае. – Charlie

Смежные вопросы