Устранение зависания теста .net на «Запуск выполнения теста, пожалуйста, подождите ...» - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь выполнить dotnet test из командной строки на нашем сервере сборки Jenkins, но он просто зависает:

Starting test execution, please wait...

Он отлично работает при локальном запуске этой команды

Если я переключусь на использование dotnet xunit, произойдет сбой со следующим:

15:42:57 Locating binaries for framework netcoreapp2.1...
15:42:58 Running .NET Core 2.1 tests for framework netcoreapp2.1...
15:42:58 The specified framework version '2.1' could not be parsed
15:42:58 The specified framework 'Microsoft.NETCore.App', version '2.1' was not found.
15:42:58   - Check application dependencies and target a framework version installed at:
15:42:58       C:\Program Files\dotnet\
15:42:58   - Installing .NET Core prerequisites might help resolve this problem:
15:42:58       http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
15:42:58   - The .NET Core framework and SDK can be installed from:
15:42:58       https://aka.ms/dotnet-download
15:42:58   - The following versions are installed:
15:42:58       2.0.6 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
15:42:58       2.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
15:42:58       2.1.2 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
15:42:58       2.1.3 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
15:42:58       2.1.4 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Согласно сообщению об ошибке, мы установили SDK ядра dotnet на сервере, но, похоже, мычего-то не хватает

Мой тестовый проект выглядит так:

<Project Sdk="Microsoft.NET.Sdk">    
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>    
    <IsPackable>false</IsPackable>
  </PropertyGroup>    
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.1.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
    <PackageReference Include="Moq" Version="4.10.0" />
    <PackageReference Include="RichardSzalay.MockHttp" Version="5.0.0" />
    <PackageReference Include="xunit" Version="2.3.1" />
    <PackageReference Include="xunit.runner.console" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
  </ItemGroup>        
</Project>

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

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

Чтобы проверить, не в этом ли проблема, попробуйте добавить файл xunit.runner.json в корневой каталог тестового проекта

  <ItemGroup>
    <None Update="xunit.runner.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

и поместить его в конфигурацию 1 потока.

{
  "parallelizeTestCollections": true,
  "maxParallelThreads": -1
}
0 голосов
/ 21 сентября 2018

Версия была красной сельдью, и это оказалось гораздо проще.Мои тесты тестировали методы контроллера Async, и мои не асинхронные тесты выполнялись:

var result = controller.PostAsync(request).Result;

, как только я изменил сами тесты, чтобы использовать шаблон асинхронности / ожидания, они работали нормально:

var result = await controller.PostAsync(request);

Что-то, что помогло мне диагностировать проблему, использовало аргумент dotnet test --verbosity d.При использовании этого он выводил некоторые тесты, которые проходили, а не просто «Начало выполнения теста, пожалуйста, подождите».Интересно, что каждый раз, когда я запускаю команду, она будет выполнять разное количество тестов, прежде чем застрять.Это говорит о том, что, возможно, возникла какая-то проблема тупиковой ситуации, которая привела меня к решению.Я до сих пор не уверен, почему команда работала нормально на моей локальной машине, но не на нашем подчиненном Дженкинсе.

...