Уничтожение не вызывается при запуске тестов из ряда классов в VS - PullRequest
1 голос
/ 29 октября 2019

У меня есть несколько тестов xUnit для нескольких классов. Многие из этих классов полагаются на метод установки, вызываемый перед каждым тестом, и метод очистки, вызываемый после каждого теста.

В каждом тестовом классе у меня есть конструктор, который вызывает метод установки, и метод dispose, напримерЧтобы очистить следующее:

public override void Dispose()
{
    Cleanup();
}

Каждый тестовый класс расширяет базовый класс, который расширяет класс, который наследует IDisposable.

Когда я запускаю тесты в отдельном тестовом классе, всетесты выполняются нормально, и метод dispose вызывается правильно.

Когда я запускаю все тесты в своем решении с помощью обозревателя тестов в Visual Studio, многие тесты не выполняются, поскольку метод очистки небудучи призваннымКогда я отлаживаю тесты, я не вижу, что dispose вызывается.

Я установил пакет NuGet xunit.runner.visualstudio, чтобы запустить тесты в Visual Studio 2019. Я использую xUnit 2.4.1.

Кто-нибудь знает, почему dispose не вызывается, когда я запускаю все тесты одновременно?

1 Ответ

1 голос
/ 30 октября 2019

создает общее состояние, которое необходимо инициализировать перед каждым тестом, а затем очищать

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

Для последовательного выполнения тестов сгруппируйте все тесты, которые используют общее состояние, в одну «коллекцию тестов».

Из документов

Когда использовать : когда вы хотите создать один контекст теста и поделиться им среди тестов в нескольких классах тестов и очистить егопосле завершения всех тестов в классах.

https://xunit.net/docs/shared-context

...