【问题标题】:Configuring Nunit with ASP.NET MVC Core 1.0使用 ASP.NET MVC Core 1.0 配置 Nunit
【发布时间】:2023-03-09 00:15:01
【问题描述】:

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

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

这对我有用:

  1. 我将另一个专门用于编写测试的 Web 应用项目附加到我的原始项目中,而不是控制台库项目。
  2. 然后我下载了 NuGet 包:“dotnet-test-nunit”、“NUnit”、“NUnit.Console”和“NUnit.Runners”。
  3. 然后我写了一个测试,在将这一行添加到 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# 中编程 - 如果您在这方面有任何建议,也请分享。

谢谢。

【问题讨论】:

    标签: c# tdd nunit asp.net-core-mvc asp.net-core-1.0


    【解决方案1】:

    您不需要NUnit.RunnersNUnit.Console NuGet 包。您关注的我博客上的帖子是使用 NUnitLite,这是早期使用 NUnit 编写 .NET Core 单元测试的唯一方法。从那时起,dotnet-test-nunit 就是要走的路。它与 Visual Studio 集成,允许您从测试资源管理器窗口或使用dotnet test 命令的命令行运行测试。

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

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

    如需更详细的演练,请阅读我在 Writing NUnit 3 Tests for .NET Core and ASP.NET Core 上的新博文。

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

    【讨论】:

    • 感谢您的回答。您的博客在展示分步过程时确实很有帮助。
    • 我也必须感谢 Rob,我的测试在 Visual Studio 中运行良好。不过,我似乎无法让它们在 VSTS / Visual Studio Online 上运行。我发现的所有文章都建议使用测试适配器 nuget 包——.net 核心都不支持这些包。
    • 我尝试了 NUnit、MSTest 和 xUnit 的本地和 VSTS 使用的完整实现,并发现 xUnit 得到了最好的支持 - 详细信息和链接位于 stackoverflow.com/q/40093573/2579219
    猜你喜欢
    • 2010-10-17
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多