2016-07-26 4 views
1

Я пытаюсь протестировать некоторый код .NET Core с помощью MSTest, и я обнаруживаю, что тестовый набор возвращает код выхода из нуля даже в случае неудачных тестов. Я могу воспроизвести проблему, используя образцы кода от the blog post announcing the technology. Код для воспроизведения проблемы - on github, а важные части перепечатываются ниже.Как заставить MStest возвращать ненулевой код выхода при сбое?

project.json

{ 
    "version": "1.0.0-*", 

    "testRunner": "mstest", 

    "dependencies": { 
    "dotnet-test-mstest": "1.0.1-preview", 
    "MSTest.TestFramework": "1.0.0-preview" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net45+win8" 
     ], 

     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "version": "1.0.0", 
      "type": "platform" 
     } 
     } 
    } 
    } 
} 

ExitCodeTests.cs

using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace SampleNetCoreUnitTests 
{ 
    [TestClass] 
    public class TestClass 
    { 
    [TestMethod] 
    public void TestMethodPassing() 
    { 
     Assert.IsTrue(true); 
    } 

    [TestMethod] 
    public void TestMethodFailing() 
    { 
     Assert.IsTrue(false); 
    } 
    } 
} 

Когда я запускаю тесты с dotnet test && echo THIS SHOULD NOT BE ECHOED, я получаю следующий вывод:

Discovering Tests ... 
Executing Tests ... 
Passed TestMethodPassing 
Failed TestMethodFailing 
Error Message: 
    Assert.IsTrue failed. 
Stack Trace: 
    at SampleNetCoreUnitTests.TestClass.TestMethodFailing() in /app/ExitCodeTests.cs:line 17 
============ Test Run Summary ============ 
Total tests: 2. Passed: 1. Failed: 1. Skipped: 0 
Test Run Failed. 
SUMMARY: Total: 1 targets, Passed: 1, Failed: 0. 
THIS SHOULD NOT BE ECHOED 

Даже если у меня есть неисправное испытание, набор тестов возвращает код выхода из нуля, и, таким образом, выполняется команда echo.

Не удалось переключиться на альтернативу, такую ​​как xUnit, как я могу получить свой тестовый набор для возврата ненулевого кода выхода при сбое?

Редактировать:The author of this stackoverflow answer похоже, что MSTest должен возвращать нулевой код выхода даже при сбое. Может быть, это функция MSTest. Может быть, я должен рассмотреть некоторые альтернативные тестовые бегуны.

+0

Просто, чтобы закрыть петлю, я буду комментировать здесь и сказать, что я решил мою проблему путем перехода на XUnit. –

+0

Надеюсь, что здравомыслящий человек в MS вернется к этому в течение следующих полугода или около того) – Konstantin

ответ