Почему TestInitialize запускается для каждого теста в моих модульных тестах Visual Studio?

Я использую Visual Studio 2010 Beta 2. У меня есть один [TestClass], в котором есть [TestInitialize], [TestCleanup] и несколько [TestMethods].

Каждый раз, когда запускается метод тестирования, ТАКЖЕ запускаются методы инициализации и очистки!

У меня создалось впечатление, что [TestInitialize] & [TestCleanup] следует запускать только один раз за один локальный тестовый прогон.

Это верно? Если нет, как правильно это сделать?


person Pure.Krome    schedule 09.12.2009    source источник


Ответы (4)


TestInitialize и TestCleanup запускаются до и после каждого теста, чтобы гарантировать, что никакие тесты не связаны.

Если вы хотите запускать методы до и после ВСЕХ тестов, украсьте соответствующие методы атрибутами ClassInitialize и ClassCleanup.

Актуальная информация из автоматически сгенерированного тестового файла в Visual Studio:

При написании тестов вы можете использовать следующие дополнительные атрибуты:

// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) { }

// Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup() { }

// Use TestInitialize to run code before running each test 
[TestInitialize()]
public void MyTestInitialize() { }

// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup() { }
person alexn    schedule 09.12.2009
comment
и у вас есть еще два AssemblyInitialize и AssemblyCleanup, как указано здесь stackoverflow.com/a/21304674/864201 - person Rodolpho Brock; 24.06.2015

это довольно стандартное поведение для тестовых наборов: установка и разборка до и после каждого теста. Философия заключается в том, что тесты не должны зависеть друг от друга. Если вам нужно другое поведение, вам, вероятно, следует использовать статические объекты, которые сохраняются между каждым тестом.

person stijn    schedule 09.12.2009


Методы, отмеченные атрибутом [TestInitialize ()], используются для подготовки аспектов среды, в которой будет выполняться ваш модульный тест. Цель этого - установить известное состояние для запуска вашего модульного теста. Вы можете использовать метод [TestInitialize ()] для копирования, изменения или создания определенных файлов данных, которые будет использовать ваш тест.

Создайте методы, отмеченные атрибутом [TestCleanUp {}], чтобы вернуть среду в известное состояние после выполнения теста. Это может означать удаление файлов в папках или возврат базы данных в известное состояние. Примером этого является сброс базы данных инвентаризации в исходное состояние после тестирования метода, который используется в приложении для ввода заказов.

Для получения дополнительной информации перейдите по ссылке: http://msdn.microsoft.com/en-us/library/ms182517%28v=vs.100%29.aspx.

person Pushkar Prabhu    schedule 27.09.2014