blg*_*boy 16 .net c# xunit.net .net-core project.json
我无法找到有关如何对.NET Standard 1.6类库(可以从.NET Core项目中引用)进行单元测试的最新文档.
这是project.json
我的图书馆的样子:
{
"supports": {},
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"NETStandard.Library": "1.6.0",
"Portable.BouncyCastle": "1.8.1.2"
},
"frameworks": {
"netstandard1.6": {}
}
}
Run Code Online (Sandbox Code Playgroud)
现在剩下的任务是能够创建某种可以进行单元测试的项目.目标是使用xUnit,因为这似乎是.NET Core团队正在推动的.
我继续创建了另一个.NET可移植的库项目,它有一个如下所示的project.json:
{
"supports": {},
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"NETStandard.Library": "1.6.0",
"xunit": "2.2.0-beta4-build3444",
"xunit.runner.visualstudio": "2.1.0"
},
"frameworks": {
"netstandard1.6": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在该项目中的测试类如下所示:
using USB.EnterpriseAutomation.Security.DotNetCore;
using Xunit;
namespace Security.DotNetCore.Test
{
public class AesEncryptionHelperTests
{
[Fact]
public void AesEncryptDecrypt()
{
var input = "Hello world!";
var encrypted = AesEncryptionHelper.AesEncrypt(input);
var decrypted = AesEncryptionHelper.AesDecrypt(encrypted);
Assert.Equal(input, decrypted);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我继续构建该项目时,测试资源管理器没有看到我的任何测试.
如何创建能够测试此库的单元测试?
我在xUnit的GitHub页面上发现了这个问题:https://github.com/xunit/xunit/issues/1032
正如Brad Wilson所解释的那样,NETStandard库必须使用dotnet核心库或完整的.Net Framework库进行测试.
在我的情况下,我使我的单元测试库成为一个完整的"经典桌面"库,测试资源管理器能够运行我的测试.
我目前有一个使用xunit 2.1.0和dotnet-test-xunit 2.2.0-preview2-build1029的工作项目.
这是我project.json
的单元测试项目:
{
"dependencies": {
"dotnet-test-xunit": "2.2.0-preview2-build1029",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"MyProject.Library": {
"target": "project",
},
"xunit": "2.1.0"
},
"description": "Unit tests",
"frameworks": {
"netcoreapp1.0": {
"imports": "dotnet"
}
},
"testRunner": "xunit"
}
Run Code Online (Sandbox Code Playgroud)
这适用于命令行(via dotnet test
)和Visual Studio 2015 Test Explorer.
我认为这dotnet-test-xunit
已被弃用,但我不确定.在project.json消失之后,上述所有内容都可能会发生变化,但今天仍有效.