使用 ASP.NET MVC Core 1.0 配置 Nunit

Configuring Nunit with ASP.NET MVC Core 1.0

我想为我的 ASP.NET Core 1.0 项目配置 NUnit。我试过以下:http://www.alteridem.net/2015/11/04/testing-net-core-using-nunit-3/ ,但它用于控制台应用程序。

如果我尝试将一个新项目(class 库)附加到我的解决方案,然后尝试引用我的原始项目 - 它会给我引用错误。

以下是对我有用的方法:

  1. 我将另一个专门用于编写测试的 Web 应用程序项目附加到我的原始项目,而不是控制台库项目。
  2. 然后我为 "dotnet-test-nunit"、"NUnit"、"NUnit.Console" 和 "NUnit.Runners".
  3. 下载了 NuGet 包
  4. 然后我编写了一个测试,在将此行添加到 project.json 后工作:"testRunner": "nunit"

这是我的测试项目中的 project.json 文件:

`

 {
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "JustForTest": "1.0.0-*",
    "NUnit": "3.4.1",
    "NUnit.Runners": "3.4.1",
    "NUnit.Console": "3.4.1",
    "dotnet-test-nunit": "3.4.0-beta-2"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },
  "testRunner": "nunit",
  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}`

我有以下问题:

  1. 这似乎不是优化过程 - 我该如何优化它?
  2. 为什么测试不适用于控制台应用程序,是否可以采取一些措施使它起作用?

任何帮助将不胜感激。我是 TDD 的新手,并且是 C# 编程的新手 - 如果您在这方面有任何建议,也请分享。

谢谢。

您不需要 NUnit.RunnersNUnit.Console NuGet 包。您关注的我博客上的 post 是为了使用 NUnitLite,这是早期使用 NUnit 编写 .NET Core 单元测试的唯一方法。从此,dotnet-test-nunit就是必经之路。它与 Visual Studio 集成,允许您从测试资源管理器 window 或使用 dotnet test 命令从命令行 运行 进行测试。

您的单元测试项目应该只是一个 .NET Core Class 库,而不是控制台应用程序或 Web 应用程序。高级步骤是,

  1. 将 .NET Core Class 库项目添加到您的解决方案
  2. dotnet-test-nunitNUnit NuGet 包添加到项目中
  3. 从您的测试项目中引用您的网络应用程序
  4. 写一些测试
  5. 运行 你的测试来自 Visual Studio

有关更详细的演练,请阅读我在 Writing NUnit 3 Tests for .NET Core and ASP.NET Core 上的新博客 post。

您还应该查看 ASP.NET Core documentation for Integration Testing,它会提示您如何设置测试服务器并确保您的 Startup 代码得到执行。