2016-02-23 1 views
3

Я запускаю новый проект ASP.net vNext/MVC6, и я хочу использовать xUnit для его проверки.Почему xUnit не может найти мои тесты DNX?

Я следил за instructions on the xUnit web site для проектов DNX.

Когда я пытаюсь запустить тесты в Visual Studio, либо с помощью встроенного в бегуна или в ReSharper, я получаю сообщение об ошибке:

Test Runner error message

Если я пытаюсь запустить тесты из командная строка, я получаю это:

 
xUnit.net DNX Runner (32-bit DNX 4.5.1) 
    Discovering: TA.Product.Tests 
    Discovered: TA.Product.Tests 
    Starting: TA.Product.Tests 
    TA.Product.Tests.Class1.FactMethodName [FAIL] 
     System.NullReferenceException : Object reference not set to an instance of an object. 
     Stack Trace: 
     D:\VS-Projects\TA.Product\src\TA.Product.Tests\Class1.cs(25,0): at TA.Product.Tests.Class1.FactMethodName() 
    Finished: TA.Product.Tests 
=== TEST EXECUTION SUMMARY === 
    TA.Product.Tests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 2.216s 

Вот мой project.json файла:

{ 
    "version": "1.0.0-*", 
    "description": "TA.Product.Tests Class Library", 
    "authors": [ "Tim" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 
    "dependencies": { 
    "TA.Product": "1.0.0-*", 
    "xunit": "2.1.0", 
    "xunit.runner.dnx": "2.1.0-rc1-build204" 
    }, 
    "commands": { 
    "test": "xunit.runner.dnx" 
    }, 
    "frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { 
     "dependencies": { 
     "Microsoft.CSharp": "4.0.1-beta-23516", 
     "System.Collections": "4.0.11-beta-23516", 
     "System.Linq": "4.0.1-beta-23516", 
     "System.Runtime": "4.0.21-beta-23516", 
     "System.Threading": "4.0.11-beta-23516" 
     } 
    } 
    } 
} 

Я нашел this question, и моя версия бегуна xUnit, похоже, соответствует моей версии DNX, RC1-Update1.

Я также нашел this question, в котором говорится, что мои тесты должны быть общедоступными, и они есть.

Идеи, пожалуйста?

+1

Так что это не полный ответ, но я знаю, что расширение RN для Xunit test runner не может запускать тесты DNX - потому что оно ищет неправильное место для dll. Что выглядит строка # 25 'Class1' (в методе' FactMethodName')? – danludwig

+0

@danludwig Я не совсем уверен, что это за линия, но ваша точка имеет смысл. Таким образом, R # runner не может найти тесты, потому что компилятор не выпускает никаких выходных файлов, не так ли? Все это делается в памяти с помощью aspnet5. Так что я на самом деле вижу два разных вопроса. И похоже, что мой код вызывает исключение NullReferenceException. –

+1

Да точно. Второй, где вы запускаете 'dnx test' из командной строки, он не сбой, он преуспевает и говорит вам, что есть 1 неудачный тест. Вы можете настроить проект на выпуск выходных файлов (сборку dll), но все же R # не будет искать его там, где он будет генерироваться по умолчанию. Тем не менее, он должен работать с тестовым обозревателем VS 2015 по умолчанию. – danludwig

ответ

1

При запуске dnx test из командной строки и получить следующие результаты:

Finished: TA.Product.Tests 
=== TEST EXECUTION SUMMARY === 
    TA.Product.Tests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 2.216s 

... что на самом деле успешный пробный запуск. Единственная проблема заключается в том, что ваш 1 тест не работает.

Я предполагаю, что когда он «сбой», вы пытаетесь запустить, используя расширение ReSharper xUnit. Этот бегун будет в настоящее время (по состоянию на rc1) не работает с проектами DNX, потому что R # ищет скомпилированную тестовую сборку в том месте, где ее не существует. Попробуйте отключить повторное расширение расширения xUnit и запустить тесты из тестового проводника Visual Studio по умолчанию. Он должен работать.

Затем, когда вам нужно запустить тесты, не используйте кнопки R # или ярлыки. Вместо этого используйте встроенные тестовые кнопки VS & (или просто запустите dnx test из командной строки, что должно быть быстрее). Как только вы это выясните, вы можете снова включить бегун R # xunit для своих других проектов, отличных от DNX.

Смежные вопросы