在 ASP.NET Core 中创建单元测试

Leg*_*nds 5 asp.net-mvc unit-testing xunit visual-studio-2015 asp.net-core-1.0

当我在 ASP.NET MVC 4.6 项目的应用程序代码中右键单击一个类时,我有这个选项来创建单元测试:

在此处输入图片说明

但是在我的 ASP.NET Core (Visual Studio 2015 Core 1.0.0 Tooling Preview 2) 中,当我右键单击该类时,我没有此选项可用。

我读到 xUnit 现在是 ASP.NET Core 项目的推荐测试框架。不能使用旧的良好的 Microsoft单元测试框架吗?

我们现在真的被迫使用 xUnit 吗?

看起来将来会有一个兼容版本的 MSTest 框架 --> 堆栈溢出问题。

对于 ASP.NET Core RC2:

宣布 MSTest 框架支持 .NET Core RC2 / ASP.NET Core RC2

因为我不想切换到 xUnit。

aka*_*mis 2

目前,您可以将MSTestNUnitxUnit用于 .NET Core 应用程序。xUnit 作为现代单元测试框架是首选。xUnit 的主要优点是它实例化和运行测试的方式。

xUnit为每个测试方法创建一个新实例,而其他方法则为每个测试类创建一个新实例并运行同一实例中的所有方法。(因此他们需要诸如 [Setup] 和 [TearDown] 属性之类的东西)。

这种运行测试方法的方式有两个优点:

  1. 测试方法不会相互依赖,因为它们不会共享任何字段或属性,这是一个很好的做法。因此开发人员自发地被迫隔离测试方法。

  2. xUnit 的并行执行可以执行得更好,因为它并行运行所有测试方法,而 NUnit 则不能同时运行同一类中的测试方法。

一般来说,性能在单元测试中似乎并不是什么大问题,但考虑到集成测试,性能确实很重要,xUnit 绝对可以表现得更好。

结论:您不必被迫在 .NET Core 应用程序中使用 xUnit,但您最好这样做。