使用 xUnit 测试 .Net 核心库

Testing .Net Core Library with xUnit

我正在创建一个可以被 ASP.NET Core 应用程序使用的 .Net Core Library。默认情况下 Visual Studio 创建 project.json 如下

{
  "dependencies": {

    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  },
  "version": "1.0.0-*"
}

我认为建议将 netstandard1.x 用于将被其他应用程序使用的库。我要删除 "imports": "dnxcore50" 因为那是针对旧的 .NET Core 预览版(在 .NET Core 1.0 RTM 和 .NET Core RC2 发布之前)

现在我想使用 xunit 对这个库进行单元测试,所以按照文章 Getting started with xUnit.net (.NET Core / ASP.NET Core) 但是 xunit 建议将库标记为 .Net Core Application

You may have noticed that part of what we did here was mark your class library as a .NET Core Application (the netcoreapp1.0 framework). When using .NET CLI for testing, unit test projects are actually an application*, not a class library. If you forget to make this change, the compiler will tell you that dotnet-test-xunit is not compatible with your class library project. We tell Visual Studio to generate a class library, though, because it most closely matches our desired project structure.

  • The application's Main function is provided by the xUnit.net runner, not by you.

所以我按照建议更新了 project.josn,并且能够 运行 单元测试。但是我有问题:

1> 当其他应用程序可以使用该库时,是否建议将 .Net Core 库的目标框架从 netstandard1.6 更改为 netcoreapp1.0

您将有一个项目(和 project.json)专用于您的测试项目。

您需要将测试项目标记为 .NET Core 应用程序,因为它实际上会被执行。 无需将作为您的库的目标项目更改为核心应用程序。

在这里你可以看到 project.json for a test project

这里是 library project