使用 MSTest Framework 测试面向 .NET Standard 1.6 及更高版本的应用程序

Using MSTest Framework for testing applications targeting .NET Standard 1.6 and higher

我正在 my project 从 .NETFramework 4.5.1 迁移到 .NET Standard 1.6

该项目正在使用 MSTest 框架,我想暂时保持这种状态,避免在另一个框架(XUnit、NUnit 等)中重写测试

目前,MSTest framework support was announced for .NET Core only, and, quite naturally the dotnet-test-mstest 1.1.2-preview package available on NuGet 不支持 .NET Standard,因此我无法让我的测试项目以 .NET Standard 为目标

但是,根据 compatibility matrix,.NET Standard 1.6 与 .NET Core 1.0 兼容。
因此,我的测试程序集以 .NET Core 1.0 为目标,并引用了我的以 .NET Standard 1.6 为目标的被测系统程序集 - 它工作得很好。

问题是 - 这是一个好的决定吗?

我还没有找到任何 MSTest 的路线图,我想知道当我迁移到 .NET Standard 2.0 时这个技巧是否仍然有效?
我是否应该将我的测试框架更改为具有更多最新支持的其他东西,例如 XUnit?

连微软documentation points to XUnit,都放弃MSTest了吗?

请注意这个,因为我的问题是关于未来的前景,而不仅仅是当前的事态。

>> 该项目正在使用 MSTest 框架,我想暂时保持这种状态,避免在另一个框架(XUnit、NUnit 或 te 等)中重写测试

听起来很合理。

>> 我无法让我的测试项目以 .NET Standard 为目标

可以。

请参阅此post以供参考:https://blogs.msdn.microsoft.com/visualstudioalm/2016/11/29/evolving-the-test-platform-part-3-net-core-convergence-and-cross-plat/ 请注意,您不再需要 dotnet-test-mstest 包。请改用 MSTest.TestAdapter。

>> 甚至 Microsoft 文档也指向 XUnit

在这种情况下,是的。但是还有其他项目也大量使用 MSTest。

我们在 MSTest 测试框架和 VS 测试平台上工作。作为一个测试平台,我们采取多元化的方法,并希望将测试框架的选择权留给开发人员(而不是支持任何一个框架)。您可以在此处阅读有关此方法的更多信息:https://blogs.msdn.microsoft.com/visualstudioalm/2016/07/25/evolving-the-visual-studio-test-platform-part-1/.

>> 他们要放弃 MSTest 了吗?

完全没有。

请看这里:https://blogs.msdn.microsoft.com/bharry/2017/01/20/open-sourcing-the-vs-test-platform/, and here: https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/13399980-make-ms-test-framework-opensouce 窥见前方的路。我们将很快宣布更多——特别是在路线图方面。

>> 问题是 - 这是一个很好的决定吗?

是(基于以上所有内容)。