Тесты XUnit больше не обнаруживаются в.Net Core 1.1

Я только что обновил свой проект до.Net Core 1.1, и все мои тесты сейчас не обнаружены. Он работал нормально, когда он был в старой версии (.Net Core 1.0)

Ниже приведено сообщение в окне вывода VS 2015, созданное XUnit.

------ Discover test started ------
Discovering tests in 'C:\TW\websites2016\AssetsDB\src\Tests\project.json' ["C:\Program Files\dotnet\dotnet.exe" test "C:\TW\websites2016\AssetsDB\src\Tests\project.json" --output "C:\TW\websites2016\AssetsDB\src\Tests\bin\Debug\netcoreapp1.1" --port 61778 --parentProcessId 7316 --no-build]
'test-xunit' returned '-532462766'.
========== Discover test finished: 0 found (0:00:01.7697049) ==========

Коды в проекте.json

{
  "version": "1.0.0-*",
  "testRunner": "xunit",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "AssetsDB": { "target": "project" },
    "xunit": "2.2.0-beta4-build3444",
    "dotnet-test-xunit": "2.2.0-preview2-build1029",
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dotnet5.4",
        "portable-net451+win8"
      ]
    }
  }
}

Мой образец теста:

namespace Tests
{
    public class QueryPagingAssetsTest
    {
        [Fact]
        public void should_return_PagingAssetItems()
        {
             Assert.True(xxxxx);
        }
    }
}

Есть что-то, что я пропускаю? Нужно ли что-то менять, чтобы сделать его совместимым с.Net Core 1.1?

ОБНОВЛЕНО: Рабочая версия project.json

Вам нужно добавить библиотеку InternalAbstractions. Если вы перейдете по ссылке Брэда, он скажет вам использовать "xunit.runner.visualstudio" вместо "xunit.runner.visualstudio". Но AFAIK, он еще не работает (по состоянию на 12.09.2016)

"dependencies": {
    "AssetsDB": { "target": "project" },
    "Microsoft.DotNet.InternalAbstractions": "1.0.1-beta-003206",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "xunit": "2.2.0-beta4-build3444",
    "dotnet-test-xunit": "2.2.0-preview2-build1029"
    //"xunit.runner.visualstudio": "2.2.0-beta4-build1194"
  },

3 ответа

Решение

Добавлять "Microsoft.DotNet.InternalAbstractions": "1.0.0" к вашим зависимостям у dotnet-test-xunit есть проблемы с.NET Core 1.1 (и, очевидно, он должен быть удален, когда выйдет новый инструмент на основе csproj). Проверьте https://github.com/xunit/xunit/issues/1031.

Я использую NUnit, и моя проблема решена следующим образом: установка Microsoft.DotNet.InternalAbstractions, закрытие Visual Studio, удаление project.lock.json, открытие Visual Studio, компиляция и запуск тестов

Создание юнит-тестов с ASP.NET Core 1.1, xUnit и ReSharper

Моя текущая среда:

  • Windows 10 64bit
  • Visual Studio Enterprise 2017 15.1 (26403.7), выпуск
  • ReSharper 2017.1.2

После того, как я создал проект с dotnet new xunitЯ смог создать тесты и запустить их с помощью ReSharper Unit Test Session.

.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

</Project>

UnitTest.cs

using Xunit;

namespace ErpWebApi.UnitTests
{
   public class UnitTest1
   {
        [Fact]
        public void TestFail()
        {
            Assert.Equal(2, 3);
        }

        [Fact]
        public void TestSucess()
        {
            Assert.Equal(2, 2);
        }
    }
}

Результат:

Смотреть изображение только с гиперссылкой, без повторений

Ссылка на Microsoft

Другие вопросы по тегам