Как xUnit runner обрабатывает статические методы без конструктора статического класса?

#.net #unit-testing #xunit.net #xunit

#.net #модульное тестирование #xunit.net #xunit

Вопрос:

Если у меня есть класс со статическими фактами (методы тестирования) и у класса есть статический конструктор, вызывается ли конструктор для каждого факта или только один раз для всех фактов в классе? Я думаю, это зависит от того, как runner загружает / выгружает тестовые классы?

Ответ №1:

По опыту я знаю, что он вызывается только один раз для класса. Это то же самое, если вы используете статический класс (т. Е. класс настроек) в своих нестатических тестах (факты). Конструктор статического объекта вызывается только один раз для всего тестового класса.

Комментарии:

1. Спасибо! раз уж мы продолжили тему, есть идеи о том, что происходит с нестатическими методами / конструкторами? Создается ли экземпляр класса один раз, а затем вызывается каждый метод, или для каждого метода существуют отдельные экземпляры?

2. Класс, в котором находятся тесты, является конструктором, который затем уничтожается один раз для каждого теста. Итак, если в классе есть 10 фактов, он будет создан 10 раз, а затем 10 раз уничтожен. Любой нестатический объект будет воссоздан. Любой статический объект будет использован повторно.

Ответ №2:

Если что-либо (например. Факты) используйте статический метод или класс в первый раз, когда этот статический конструктор вызывается. Если нет ссылок на статический класс, статический конструктор не вызывается вообще. Если вы планируете запускать код до и после ТЕХ тестов (setup / dispose), я рекомендую использовать приспособления (см.https://xunit.net/docs/shared-context ).