使用OpenCover运行XUnit和FluentAssertions会显示错误消息

时间:2016-11-28 09:11:01

标签: asp.net-core xunit opencover fluent-assertions

我正在尝试使用ASP.NET Core上的Xunit和Fluent Assertions运行代码覆盖。但是,我收到一条错误消息,我并不理解。

我的测试项目的project.json:

{
  "version": "1.0.0-*",
  "testRunner": "xunit",
  "debugType": "portable",
  "dependencies": {
    "xunit": "2.2.0-beta2-build3300",
    "FluentAssertions": "4.15.0",
    "dotnet-test-xunit": "2.2.0-preview2-build1029",
    "ExpenseReporting": "1.0.0-*",
    "Moq": "4.6.38-alpha"
  },
  "commands": {
    "test": "xunit.runner.dnx"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      }
    }
  }
}

我对OpenCover的命令:

OpenCover.Console.exe -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:"test "C:\Users\johndoe\Desktop\Application\ExpenseReporting.Test\project.json"" -output:coverage.xml -register:user -filter:"+[*]* -[xunit*]* -[*]*Migrations.*"

我收到很多错误,但都属于这种错误:

An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'C:\projects\fluentassertions-vf06b\Src\FluentAssertions.NET40\Execution\MSTestFramwork.cs'.

我很清楚找不到该目录,因为它不存在。我想知道它为什么试图在那里访问它?

2 个答案:

答案 0 :(得分:2)

看起来OpenCover正试图在其覆盖率报告中包含FluentAssertions的源代码。我不完全确定为什么会这样做,但我能够通过告诉OpenCover排除FluentAssertions来解决这个问题。

这是我正在使用的过滤器:

-filter:"+[*]* -[*FluentAssertions*]*"

答案 1 :(得分:0)

看起来你的project.json文件有些问题。如果您使用dotnet命令,则没有commands元素。你的project.json文件应该是这样的。

{
    "version": "1.0.0-*",
    "testRunner": "xunit",
    "dependencies": {
        "xunit": "2.2.0-beta2-build3300",
        "dotnet-test-xunit": "2.2.0-preview2-build1029",
        "FluentAssertions": "4.15.0",
        "ExpenseReporting": "1.0.0-*",
        "Moq": "4.6.38-alpha"
    },
    "frameworks": {
        "netcoreapp1.0": {
            "dependencies": {
                "Microsoft.NETCore.App": {
                    "type": "platform",
                    "version": "1.0.0"
                }
            }
        }
    }
}

https://xunit.github.io/docs/getting-started-dotnet-core.html

这是命令,它运行测试并使用打开的封面获取代码覆盖率。

OpenCover.Console.exe -target:"C:\Program Files\dotnet\dotnet.exe" -targetargs:"test C:\projects\HelloWorld.Tests" -register:user -filter:"+[*]* -[xunit*]*" -output:coverage.xml -oldStyle