2016-07-26 3 views
1

J'essaye de tester un certain code .NET Core avec MSTest, et je découvre que la suite de tests retourne un code de sortie de zéro même quand il y a des tests qui échouent. Je suis capable de reproduire le problème en utilisant les exemples de code de the blog post announcing the technology. Le code pour reproduire le problème est on github, et les parties importantes sont réimprimées ci-dessous.Comment puis-je obtenir MStest pour renvoyer un code de sortie différent de zéro en cas d'échec?

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

Quand je lance les tests avec dotnet test && echo THIS SHOULD NOT BE ECHOED, je reçois la sortie suivante:

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 

Même si j'ai un test à défaut, la suite de tests renvoie un code de sortie de zéro, et donc la commande echo est en cours d'exécution. À court de passer à une alternative comme xUnit, comment obtenir ma suite de tests pour renvoyer un code de sortie différent de zéro en cas d'échec?

Editer:The author of this stackoverflow answer semble croire MSTest devrait retourner un code de sortie zéro, même en cas d'échec. Peut-être que c'est une "fonctionnalité" MSTest. Peut-être que je devrais envisager d'autres coureurs d'essai.

+0

Juste pour fermer la boucle, je vais commenter ici et dire que je résolu mon problème en passant à xUnit. –

+0

J'espère qu'un homme sain d'esprit dans la SEP reviendra là-dessus pendant la prochaine moitié d'année environ) – Konstantin

Répondre