Я пытаюсь протестировать некоторый код .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. Может быть, я должен рассмотреть некоторые альтернативные тестовые бегуны.
Просто, чтобы закрыть петлю, я буду комментировать здесь и сказать, что я решил мою проблему путем перехода на XUnit. –
Надеюсь, что здравомыслящий человек в MS вернется к этому в течение следующих полугода или около того) – Konstantin