Тестовые случаи для запуска в последовательности вместо параллельных
Я погуглил по этому вопросу, но не смог найти ответ.
Мои тестовые прогоны выполняются параллельно и вызывают сбой друг друга. Они все проходят, когда бегут индивидуально. Я пытался добавить нить в тест и положить их спать, но не повезло.
Есть ли способ запустить эти тесты в последовательности один за другим?
Моя среда:
Visual Studio 2010 Resharper Jet для мозга 6.1
1 ответ
Я хотел бы предложить вам иметь модульные тесты, которые являются детерминированными. То есть они не зависят от порядка их запуска или от того, будут ли выполняться другие тесты до или после. Не делать это - рецепт неудачи. Большинство участников тестирования основаны на том факте, что методы тестирования полностью независимы.
Этот факт по своей сути очевиден в том, как вызываются методы тестового класса. Например, с помощью MS Test вы можете использовать методы инициализации Assembly, Class и Test. Все они вызываются для каждого вызываемого TestMethod. Например, со следующим классом:
[TestClass()]
public class DivideClassTest
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
Console.WriteLine("Assembly Init");
}
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
Console.WriteLine("ClassInit");
}
[TestInitialize()]
public void Initialize()
{
Console.WriteLine("TestMethodInit");
}
[TestCleanup()]
public void Cleanup()
{
Console.WriteLine("TestMethodCleanup");
}
[ClassCleanup()]
public static void ClassCleanup()
{
Console.WriteLine("ClassCleanup");
}
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
Console.WriteLine("AssemblyCleanup");
}
[TestMethod()]
public void Test1()
{
Console.WriteLine("Test1");
}
[TestMethod()]
public void Test2()
{
Console.WriteLine("Test2");
}
}
Вы увидите вывод как
Assembly Init
ClassInit
TestMethodInit
Test1
TestMethodCleanup
TestMethodInit
Test2
TestMethodCleanup
ClassCleanup
AssemblyCleanup
Хотя существует класс "Test", сам TestMethod считается тестом. У "тестового" класса может быть много тестов.