将 MSTest、xUnit 或 NUnit 与 dotnet 核心一起使用
Using MSTest, xUnit or NUnit with dotnet core
TLDR - 跳转到有关工作 xUnit 或 MSTest 设置的详细信息的答案。 xUnit 是最不痛苦的选择。
我一直无法让 NUnit 在我的构建服务器上工作,所以我求助于尝试 xUnit 和 MSTest - 两者都不适合我。
MSTest 我只是不明白——我希望它能工作,但是当我尝试从 nuget 安装 dotnet-test-mstest 时,我遇到了依赖问题,因为它的所有依赖库都与 netcoreapp1 不兼容,例如……
依赖MSTest.ObjectModel 1.0.1-preview不支持框架.NETCoreApp,Version=v1.0.
依赖项MSTest.TestAdapter.Dotnet 1.0.4-preview 不支持框架。
任何人都可以就为什么会发生这种情况提供任何建议吗?
我按照这些说明创建了全新的项目,成功地完成了这项工作...
https://docs.microsoft.com/en-us/dotnet/articles/core/testing/using-mstest-on-windows
似乎需要将 MSTest dotnet 核心项目创建为控制台应用程序才能工作..?
为了帮助所有其他人,这是我最终得到的project.json。
{
"version": "1.0.0-*",
"testRunner": "mstest",
"dependencies": {
"dotnet-test-mstest": "1.1.1-preview",
"MyLibrary": {
"target": "project"
},
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
},
"MSTest.TestFramework": "1.0.4-preview",
"NSubstitute": "2.0.0-rc"
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
我似乎以不同的方式做了两件关键的事情。首先,我之前的关键依赖是...
"NETStandard.Library": "1.6.0"
而在新 project.json 中是
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
(在最初的 project.json 中,它作为子依赖项放置在文件的框架部分中)。
另一个在 'newtcoreapp1.0' 下的导入部分。在最初的 project.json 中,我使用了它自己,而工作的则导入了 dnxcore50(尽管我仍然不相信这实际上是正确的)。
MSTest.TestFramework 的 1.0.5 预览版似乎存在错误 - 我最终将版本更改为更早的版本。使用 1.0.5 时,测试将加载,但每个测试都会因错误而失败...
无法从程序集 'Microsoft.VisualStudio.TestPlatform.TestFramework
加载类型 'LogMessageHandler'
我四处寻找可以将此作为错误提交的地方,但还没有成功。如果有人发现这个有同样的问题并且知道在哪里记录它,请告诉我,我会'+1'它。
为了完整起见,这里有一个适用于 NUnit 的 project.json 文件(尽管它是 NUnit 3 并且读取它的输出文件(在撰写本文时)是 VSTS 上的一个问题...
{
"dependencies": {
"MyLibrary": {
"target": "project"
},
"NETStandard.Library": "1.6.0",
"NUnit": "3.5.0",
"dotnet-test-nunit": "3.4.0-beta-1"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"netcoreapp1.0",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1-*",
"type": "platform"
},
"NSubstitute": "2.0.0-rc"
}
}
},
"testRunner": "nunit",
"version": "1.0.0-*"
}
这里是 xUnit - 我会更多地使用它,因为它在 VSTS 上似乎更可行...
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable"
},
"dependencies": {
"System.Runtime.Serialization.Primitives": "4.1.1",
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-rc2-build10015",
"NSubstitute": "2.0.0-rc",
"MyLibrary": {
"target": "project"
}
},
"testRunner": "xunit",
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},
"imports": [
"dotnet5.4",
"portable-net451+win8"
]
}
}
}
这里有更多真正有用的 xUnit 信息 - https://docs.microsoft.com/en-us/dotnet/articles/core/testing/unit-testing-with-dotnet-test
总的来说,我发现,一旦考虑到让 VSTS 正常工作,xUnit 就远远超过了最容易使用的选项 - 你只需要设置构建服务器任务以使用 dotnet test 命令行,然后使用发布测试文件任务以显示结果。在经历了很多痛苦之后,我仍然无法在构建服务器上通过 MS 测试 运行。
@TTCG 提出的 dotnet-test-mstest 1.1.1-preview 和 MSTest.TestFramework 1.0.5-preview 的问题因此已在更高版本中得到修复。欢迎在 dotnet-test-mstest 1.1.2-preview 和 MSTest.TestFramework 1.0.6-preview 上试用。
TLDR - 跳转到有关工作 xUnit 或 MSTest 设置的详细信息的答案。 xUnit 是最不痛苦的选择。
我一直无法让 NUnit 在我的构建服务器上工作,所以我求助于尝试 xUnit 和 MSTest - 两者都不适合我。
MSTest 我只是不明白——我希望它能工作,但是当我尝试从 nuget 安装 dotnet-test-mstest 时,我遇到了依赖问题,因为它的所有依赖库都与 netcoreapp1 不兼容,例如……
依赖MSTest.ObjectModel 1.0.1-preview不支持框架.NETCoreApp,Version=v1.0.
依赖项MSTest.TestAdapter.Dotnet 1.0.4-preview 不支持框架。
任何人都可以就为什么会发生这种情况提供任何建议吗?
我按照这些说明创建了全新的项目,成功地完成了这项工作...
https://docs.microsoft.com/en-us/dotnet/articles/core/testing/using-mstest-on-windows
似乎需要将 MSTest dotnet 核心项目创建为控制台应用程序才能工作..?
为了帮助所有其他人,这是我最终得到的project.json。
{
"version": "1.0.0-*",
"testRunner": "mstest",
"dependencies": {
"dotnet-test-mstest": "1.1.1-preview",
"MyLibrary": {
"target": "project"
},
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
},
"MSTest.TestFramework": "1.0.4-preview",
"NSubstitute": "2.0.0-rc"
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
我似乎以不同的方式做了两件关键的事情。首先,我之前的关键依赖是...
"NETStandard.Library": "1.6.0"
而在新 project.json 中是
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
(在最初的 project.json 中,它作为子依赖项放置在文件的框架部分中)。
另一个在 'newtcoreapp1.0' 下的导入部分。在最初的 project.json 中,我使用了它自己,而工作的则导入了 dnxcore50(尽管我仍然不相信这实际上是正确的)。
MSTest.TestFramework 的 1.0.5 预览版似乎存在错误 - 我最终将版本更改为更早的版本。使用 1.0.5 时,测试将加载,但每个测试都会因错误而失败...
无法从程序集 'Microsoft.VisualStudio.TestPlatform.TestFramework
加载类型 'LogMessageHandler'我四处寻找可以将此作为错误提交的地方,但还没有成功。如果有人发现这个有同样的问题并且知道在哪里记录它,请告诉我,我会'+1'它。
为了完整起见,这里有一个适用于 NUnit 的 project.json 文件(尽管它是 NUnit 3 并且读取它的输出文件(在撰写本文时)是 VSTS 上的一个问题...
{
"dependencies": {
"MyLibrary": {
"target": "project"
},
"NETStandard.Library": "1.6.0",
"NUnit": "3.5.0",
"dotnet-test-nunit": "3.4.0-beta-1"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"netcoreapp1.0",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1-*",
"type": "platform"
},
"NSubstitute": "2.0.0-rc"
}
}
},
"testRunner": "nunit",
"version": "1.0.0-*"
}
这里是 xUnit - 我会更多地使用它,因为它在 VSTS 上似乎更可行...
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable"
},
"dependencies": {
"System.Runtime.Serialization.Primitives": "4.1.1",
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-rc2-build10015",
"NSubstitute": "2.0.0-rc",
"MyLibrary": {
"target": "project"
}
},
"testRunner": "xunit",
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},
"imports": [
"dotnet5.4",
"portable-net451+win8"
]
}
}
}
这里有更多真正有用的 xUnit 信息 - https://docs.microsoft.com/en-us/dotnet/articles/core/testing/unit-testing-with-dotnet-test
总的来说,我发现,一旦考虑到让 VSTS 正常工作,xUnit 就远远超过了最容易使用的选项 - 你只需要设置构建服务器任务以使用 dotnet test 命令行,然后使用发布测试文件任务以显示结果。在经历了很多痛苦之后,我仍然无法在构建服务器上通过 MS 测试 运行。
@TTCG 提出的 dotnet-test-mstest 1.1.1-preview 和 MSTest.TestFramework 1.0.5-preview 的问题因此已在更高版本中得到修复。欢迎在 dotnet-test-mstest 1.1.2-preview 和 MSTest.TestFramework 1.0.6-preview 上试用。