FWIW Я могу воспроизвести это поведение с помощью. NET Core UnitTestProject, используя MSTest 2.0.0.
Вот код тестового класса:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace UnitTestProject2
{
[TestClass]
public class UnitTest1
{
[ClassInitialize]
public static void ClassInit(TestContext tc)
{
throw new Exception("DIE IN INITIALIZE");
}
[TestMethod] public void TestMethod1() { }
[TestMethod] public void TestMethod2() { }
[TestMethod] public void TestMethod3() { }
}
}
И действительно, если вы Посмотрите на результаты в TestExplorer, вы можете увидеть, что только TestMethod1
помечены как Failed, а TestMethod2
и TestMethod3
помечены как Successful
.
Тот же результат с консоли.
❯ dotnet test
Test run for C:\source\stuff\UnitTestProject1\UnitTestProject2\bin\Debug\netcoreapp3.1\UnitTestProject2.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
X TestMethod1
Error Message:
Class Initialization method UnitTestProject2.UnitTest1.ClassInit threw exception. System.Exception: System.Exception: DIE IN INITIALIZE.
Stack Trace:
at UnitTestProject2.UnitTest1.ClassInit(TestContext tc) in C:\source\stuff\UnitTestProject1\UnitTestProject2\UnitTest1.cs:line 12
Test Run Failed.
Total tests: 3
Passed: 2
Failed: 1
Total time: 0,8928 Seconds
Интересно, что если вы добавите несколько Console.WriteLine
операторов в методы испытаний, вы увидите, что они действительно выполняются. Таким образом, это не похоже на ошибку только в выходных данных.
Обновление Не уверен, стоит ли ожидать этого, но я представил проблему для этого https://github.com/microsoft/testfx/issues/672 .