无法添加xunit测试项目.NET Core

时间:2016-12-23 14:59:55

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

我从经典的.NET Framework Console App模板创建了一个解决方案。 之后,我转到CLI并创建一个xunit测试项目,开始执行以下命令:

dotnet new -t xunittest

dotnet restore

dotnet test顺利,测试通过。

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

我上传了最新的两个活动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 runtime 1.1。三天前,我设法用完全相同的步骤导入这样一个项目。今天我不能这样做。

1 个答案:

答案 0 :(得分:1)

如果我没有弄错,根据我的(有限)经验,我发现我无法使用xUnit 1.0.1来测试我的2.2.0 preview .NET Core应用,并且必须使用{ "testRunner": "xunit", .... }

我的博客是关于ASP.NET Core – MVC xUnit Integration Testing

事后我发现了2个问题:

  1. 如上所述的版本控制
  2. 我的一个项目与其名称不在同一个文件夹中。
  3. TL; DR:来自Blog帖子的Snipper;

    ASP.NET核心 - MVC xUnit集成测试

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

    我直接遇到一些基本的绊脚石,可能会帮助那里的一些人!

    测试发现

    第一个绊脚石试图让所有测试都被发现。

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

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

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

    但由于这不支持Microsoft.NETCore.App 1.0.1,经过一段时间的Bing'ing,我发现我需要使用“dotnet-test-xunit”:“2.2.0-preview2- build1029"

    引用MVC项目

    第二个绊脚石试图简单地引用MVC项目,在这种情况下,“任务”。所以我添加了以下行:

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

    但是这给了我一个“运行时”是一个不受支持的框架错误,我不能为我的生活弄清楚。最后,事实证明是因为Taskily项目(或者至少在.sln中称为Taskily)实际上位于名为WebApplication1的文件夹中,所以我的解决方案结构看起来像这样

    include /etc/nginx/sites-enabled/*;

    我编译的方式是

    1. 关闭.sln
    2. 将WebApplicaiton1文件夹重命名为Taskily(与.sln中的项目名称相同)
    3. 重新打开.sln(任务不会加载,因为它正在寻找src / WebApplication1 / Taskily.xproj
    4. 从.sln中删除对Taskily项目的引用。
    5. 重新添加Taskly项目,该项目现在应该在src / Taskily / Taskily.xproj中
    6. 编译
    7. 错误信息非常不直观,并且困扰了我多年!