.Net Core 1.1 中不再发现 XUnit 测试
XUnit Tests no longer discovered in .Net Core 1.1
我刚刚将我的项目升级到 .Net Core 1.1,现在我所有的测试都没有被发现。它在旧版本(.Net Core 1.0)中工作正常
以下是由 XUnit
生成的 VS 2015 输出 Window 中的消息
------ 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) ==========
project.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 库。如果您遵循 Brad 的 link,它会告诉您使用 "xunit.runner.visualstudio" 而不是 "xunit.runner.visualstudio"。但是 AFAIK,它还没有工作(截至 09/12/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"
},
将 "Microsoft.DotNet.InternalAbstractions": "1.0.0"
添加到您的依赖项中,dotnet-test-xunit 与 .NET Core 1.1 存在问题(并且显然将在新的基于 csproj 的工具推出时停用)。查看 https://github.com/xunit/xunit/issues/1031#issuecomment-261374279。
我正在使用 NUnit,以下解决了我的问题:安装 Microsoft.DotNet.InternalAbstractions、关闭 Visual Studio、删除 project.lock.json、打开 Visual Studio、编译和 运行 测试
使用 ASP.NET Core 1.1、xUnit 和 ReSharper 创建单元测试
我现在的环境:
- Windows 10 64 位
- Visual Studio Enterprise 2017 15.1 (26403.7) 版本
- ReSharper 2017.1.2
在我使用 dotnet new xunit
创建项目后,我能够使用 ReSharper 单元测试会话.[=15= 创建测试并 运行 它]
.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);
}
}
}
结果:
See image only with hyperlink, no rep
Reference to Microsoft
我刚刚将我的项目升级到 .Net Core 1.1,现在我所有的测试都没有被发现。它在旧版本(.Net Core 1.0)中工作正常
以下是由 XUnit
生成的 VS 2015 输出 Window 中的消息------ 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) ==========
project.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 库。如果您遵循 Brad 的 link,它会告诉您使用 "xunit.runner.visualstudio" 而不是 "xunit.runner.visualstudio"。但是 AFAIK,它还没有工作(截至 09/12/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"
},
将 "Microsoft.DotNet.InternalAbstractions": "1.0.0"
添加到您的依赖项中,dotnet-test-xunit 与 .NET Core 1.1 存在问题(并且显然将在新的基于 csproj 的工具推出时停用)。查看 https://github.com/xunit/xunit/issues/1031#issuecomment-261374279。
我正在使用 NUnit,以下解决了我的问题:安装 Microsoft.DotNet.InternalAbstractions、关闭 Visual Studio、删除 project.lock.json、打开 Visual Studio、编译和 运行 测试
使用 ASP.NET Core 1.1、xUnit 和 ReSharper 创建单元测试
我现在的环境:
- Windows 10 64 位
- Visual Studio Enterprise 2017 15.1 (26403.7) 版本
- ReSharper 2017.1.2
在我使用 dotnet new xunit
创建项目后,我能够使用 ReSharper 单元测试会话.[=15= 创建测试并 运行 它]
.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);
}
}
}
结果:
See image only with hyperlink, no rep
Reference to Microsoft