【问题标题】:Can't add xunit test project .NET Core无法添加 xunit 测试项目 .NET Core
【发布时间】:2016-12-23 14:59:55
【问题描述】:

我从经典的 .NET Framework 控制台应用程序模板创建了一个解决方案。 之后,我转到 CLI 并创建一个 xunit 测试项目,启动以下命令:

dotnet new -t xunittest

dotnet restore

dotnet test 顺利,测试通过。

据我所知,我保留了 .NET Core 所需的“src”->“test”文件夹映射。 之后,我尝试从我的 VS 2015 Update 3 中添加我的测试项目,我收到一个错误: “DNX 项目系统包未正确加载。 该问题可能是由配置更改或安装另一个扩展引起的。您可以通过检查文件“本地磁盘上文件的路径”来获取更多信息。

我已经上传了最新的两个事件here

这里是单元测试项目.json的内容:

    {
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {
    "System.Runtime.Serialization.Primitives": "4.1.1",
    "xunit": "2.1.0",
    "dotnet-test-xunit": "1.0.0-rc2-192208-24"
  },
  "testRunner": "xunit",
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      },
      "imports": [
        "dotnet5.4",
        "portable-net451+win8"
      ]
    }
  }
}

我安装了 .NET Core 运行时 1.1。三天前,我设法用完全相同的步骤导入了这样一个项目。今天我做不到。

【问题讨论】:

    标签: .net visual-studio .net-core xunit.net


    【解决方案1】:

    如果我没记错的话,根据我(有限的)经验,我发现我无法使用 xUnit 2.1.0 来测试我的 1.0.1 .NET Core 应用程序,而必须使用 2.2.0 preview

    我在博客上写过ASP.NET Core – MVC xUnit Integration Testing

    事后看来我有两个问题:

    1. 如上所述的版本控制
    2. 我的一个项目与其名称不在同一个文件夹中。

    TL;DR : 来自博客文章的狙击手;

    ASP.NET Core – MVC xUnit 集成测试

    最近我想测试我的新 ASP.NET Core MVC 应用程序,以确保我的 startup.cs 配置正确,特别关注它的 JSON 解析。

    我马上遇到了一些可能对一些人有帮助的基本绊脚石!

    测试发现

    第一个绊脚石是试图让测试被发现。

    我必须选择一个测试运行器并将其添加到我的 project.json 的根目录中:

    {
      "testRunner": "xunit",
      ....
    }
    

    我最初尝试使用 xunit 和 dotnet-test-xunit 版本 2.1.0,这是撰写本文时正式发布的版本。

    但是由于它不支持 Microsoft.NETCore.App 1.0.1,在 Bing 绕了一圈之后,我发现我需要使用 "dotnet-test-xunit": "2.2.0-preview2- build1029"

    引用 MVC 项目

    第二个绊脚石是试图简单地引用 MVC 项目,在本例中是“Taskily”。所以我添加了以下行:

    "dependencies": {
      .....
      "Taskily": "1.0.0*"
    }
    

    但这给了我一个“运行时”是一个不受支持的框架错误,我终其一生都无法弄清楚。最后,原来是因为 Taskily 项目(或者至少它在 .sln 中被称为 Taskily)实际上驻留在一个名为 WebApplication1 的文件夹中,所以我的解决方案结构看起来像这样

    root
    |global.json
    |---src
        |---WebApplication1  <-- renamed to Taskily in .sln
        |---Taskily.Tests    <-- new test project
    

    我的编译方式是

    1. 关闭.sln
    2. 将 WebApplicaiton1 文件夹重命名为 Taskily(与 .sln 中的项目名称相同)
    3. 重新打开 .sln(Taskily 不会加载,因为它正在寻找 src/WebApplication1/Taskily.xproj
    4. 从 .sln 中删除对 Taskily 项目的引用。
    5. 重新添加现在应该在 src/Taskily/Taskily.xproj 中的 Taskily 项目
    6. 编译

    错误信息太不直观了,困扰我很久了!

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多