TestInitialize vs ClassInitialize

В чем разница между TestInitialize vs ClassInitialize в MSTest? Каковы плюсы минусов каждого?

У меня создается впечатление, что TestInitialze должен запускаться с КАЖДОМ тестом каждый раз? Это верно? И что ClassInitialize будет запускаться каждый раз при новом экземпляре любого класса?

Ответ 1

Оба атрибута доступны только для классов (и, следовательно, тестов), где они принадлежат.

TestInitialize выполняется перед каждым тестом, объявленным в том же классе, где объявлен атрибут.

ClassInitialize запускает только при инициализации класса, где объявлен атрибут. Другими словами, он не будет работать для каждого класса. Только для класса, содержащего метод ClassInitialize.

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