Модульные тесты Visual Studio: запускать код инициализации перед каждым тестом

Я использую инструменты тестирования Visual Studio для модульного тестирования. Мне нужен код инициализации для запуска перед каждым тестом.

у меня есть Setup класс для кода инициализации. Я уже добавил код для запуска перед каждым тестом, используя [AssemblyInitialize], но я не могу понять, как сделать то же самое на основе одного теста.

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

[TestClass]
public class Setup
{
    [AssemblyInitialize]
    public static void InitializeTestRun(TestContext context)
    {
        //... code that runs before each test run
    }

    [TestInitialize] //this doesn't work!
    public static void InitializeTest()
    {
        //... code that runs before each test
    }
}

2 ответа

Решение

Следующее должно работать (по крайней мере, это работает с другими тестовыми средами):

  • Создайте базовый класс DatabaseIntegrationTests с помощью TestInitialize метод
  • Получите ваши другие тестовые классы из этого базового класса

Это [TestInitialize] но у вас неправильный синтаксис, он не принимает контекст:

[TestInitialize]
public static void InitializeTests()
{
    //... code that runs before each test
}
Другие вопросы по тегам