Этот вопрос расценивает поблочное тестирование в Visual Studio с помощью MSTest (это важно из-за порядка выполнения MSTEST). И отмеченный [TestInitialize] метода и тестовый конструктор класса будут работать перед каждым методом тестирования.
Так, вопрос, что Вы склонны делать в каждой из этих областей? Вы стараетесь не выполнять определенные операции в также? Что является Вашей причиной: стиль, технический, суеверие?
Я предпочитаю использовать [TestInitialize]
метод для выполнения инстанцирования протестированного объекта, и это - параметры. Я только выполняю работу в конструкторе, если необходимо инстанцировать базового класса тестирования (который обычно является, где я создаю или обновляю репозитории, и т.д.). Это помогает мне сохранить код среды тестирования и тестовый код отдельными логически и физически.
Объект, который Вы тестируете, не должны инстанцировать в методе [TestInitialize]. Можно протестировать конструктора объекта в методе тестирования [Тест].
Объект в [TestInitialize] может состоять в том, чтобы установить Ваше устройство хранения данных постоянства или подготовить значение, что протестированный объект будет используемый в тестах.
Этот вопрос также задан (позже) в В чем разница между использованием конструктора в VS Testing framework и атрибута TestInitialize()?
FWIW Я предполагаю, что под "конструктором класса" вы подразумеваете конструктор экземпляра (не статический конструктор).
Я полагаю, что тот же вопрос, который вы задаете, можно задать и о статическом конструкторе по сравнению с ClassInitialize...