2016-11-28 14 views
2

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

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

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

+0

Вы нашли любое решение этой проблемы? – valorl

ответ

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

+1

Я все еще получаю те же ошибки с FluentAssertions – Stefan

2

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

Это фильтр я использую:

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

Интересно, но добавление фильтров по крайней мере предотвращает появление сообщений об ошибках. Для справки и использования нескольких фильтров: https://github.com/opencover/opencover/wiki/Usage#understanding-filters – ICantSeeSharp