Запуск XUnit и FluentAssertions с OpenCover выдает сообщение об ошибке

Я пытаюсь запустить покрытие кода с помощью Xunit и Fluent Assertions в ASP.NET Core. Однако я получаю сообщение об ошибке, которого я не совсем понимаю.

Мой 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'.

Мне ясно, что каталог не найден, потому что он не существует. Мне интересно, почему он пытается получить к нему доступ там?


person Stefan    schedule 28.11.2016    source источник
comment
Вы нашли какое-нибудь решение?   -  person valorl    schedule 29.04.2017


Ответы (2)


Похоже, OpenCover пытается включить исходный код FluentAssertions в свои отчеты о покрытии. Я не совсем уверен, почему он это делает, но мне удалось обойти это, сказав OpenCover исключить FluentAssertions.

Я использую этот фильтр:

-filter:"+[*]* -[*FluentAssertions*]*"
person thehereward    schedule 05.05.2017
comment
Интересно, но добавление фильтров по крайней мере предотвращает появление сообщений об ошибках. Для справки и использования нескольких фильтров: github.com/opencover/opencover/wiki/ Использование # фильтра-понимания - person ICantSeeSharp; 16.11.2017

Похоже, проблема с вашим файлом 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

person Anuraj    schedule 29.11.2016
comment
Я по-прежнему получаю те же ошибки с FluentAssertions - person Stefan; 30.11.2016