Почему декорированный метод ClassInitialize делает все мои тесты неудачными?
Я понимаю, из MSDN, что ClassInitialize
должен пометить метод, который будет выполнять настройку кода для всех тестов, один раз, до того, как все тесты будут запущены. Когда я включаю такой метод в сокращенное приспособление ниже, все тесты не пройдены. Как только я это прокомментирую, они снова пройдут.
[TestClass]
public class AuthenticationTests
{
[ClassInitialize]
public void SetupAuth()
{
var x = 0;
}
[TestMethod]
public void TestRegisterMemberInit()
{
Assert.IsTrue(true);
}
}
3 ответа
[ClassInitialize]
оформленный метод должен быть статическим и принимать ровно один параметр типа TestContext
:
[ClassInitialize]
public static void SetupAuth(TestContext context)
{
var x = 0;
}
На самом деле, если я копирую и вставляю ваш код в чистый проект VS, тестирующий объясняет именно это в сообщении об ошибке:
Метод UnitTestProject1.AuthenticationTests.SetupAuth имеет неверную подпись. Метод должен быть статическим, общедоступным, не возвращать значение и должен принимать один параметр типа TestContext.
Метод отмечен [ClassInitialize]
:
- Применять только к одному методу тестового класса.
- Класс должен быть запечатан, то есть не наследоваться.
- Метод должен быть публичным статическим.
- Метод должен передать
TestContext
параметр. - Метод не возвращает значение.
В VS2015 отсутствие параметра TestContext приводит к выводу этой самой бесполезной ошибки при запуске теста (в случае, если кто-то ищет исключение, как я):
Возникло исключение: "Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeInspectionException" в Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll