2016-07-26 41 views
1

Ich versuche, einige .NET Core-Code mit MSTest zu testen, und ich stelle fest, dass die Testsuite einen Ausgangscode von Null zurückgibt, auch wenn es fehlgeschlagene Tests gibt. Ich bin in der Lage, das Problem mit den Codebeispielen von the blog post announcing the technology zu reproduzieren. Der Code, um das Problem zu reproduzieren, ist on github, und die wichtigen Teile werden unten nachgedruckt.Wie kann ich MStest dazu bringen, bei einem Fehler einen Exit-Code ungleich Null zurückzugeben?

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); 
    } 
    } 
} 

Wenn ich die Tests mit dotnet test && echo THIS SHOULD NOT BE ECHOED laufen lasse, erhalte ich die folgende Ausgabe:

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 

Auch wenn ich eine fehlerhafte Prüfung haben, die Testsuite gibt einen Ausgangscode von Null zurück, und somit wird der echo-Befehl ausgeführt.

Kurz vor dem Wechsel zu einer Alternative wie xUnit, wie kann ich meine Testsuite dazu bringen, bei einem Fehler einen Exitcode ungleich Null zurückzugeben?

Edit:The author of this stackoverflow answer scheint zu glauben, MSTest sogar einen Null-Exit-Code zurückgeben sollte, wenn scheitern. Vielleicht ist es ein MSTest "Feature". Vielleicht sollte ich mir alternative Testläufer überlegen. Diese

+0

Gerade die Schleife zu schließen, werde ich hier kommentieren und sagen, dass ich mein Problem gelöst, indem auf xUnit wechseln. –

+0

Ich hoffe, dass ein vernünftiger Mann bei MS im nächsten halben Jahr oder so wieder zurückkommt) – Konstantin

Antwort