Имея проблемы с выполнением моего тестового набора (используя ReSharper), похоже, что статический набор результатов противоречит друг другу, когда несколько тестовых классов запускаются вместе, а не проблема для отдельного запустить. структура, по существу, аналогична этому:«Общая» тестовая установка (ClassInitialize) в MSTest с использованием наследования базового класса
public class TestBase
{
protected static Sum Target;
protected static void Init(int a, int b)
{
Target = new Sum(a, b);
}
}
[TestClass]
public class TestClass1 : TestBase
{
[ClassInitialize]
public static void Setup(TestContext context) { Init(1, 2); }
[TestMethod]
public void Test()
{
Assert.AreEqual(3, Target.Result);
}
... // plus around 20 tests
}
[TestClass]
public class TestClass2 : TestBase
{
[ClassInitialize]
public static void Setup(TestContext context) { Init(3, 4); }
[TestMethod]
public void Test()
{
Assert.AreEqual(7, Target.Result); // failed. Expected:<7>. Actual:<3>
}
... // plus around 20 tests
}
Я понимаю, что это из-за мое плохое использование статических переменных и будет ценитель хороших предложений о том, как структурировать это лучше, если предположить, у меня есть около 20 модульных тестов в каждый тестовый класс и тестовая установка являются более сложными, чем приведенные выше иллюстрации.
Вы понимаете, что проблема связана с плохим использованием/дизайном со статическими переменными, но они не хотят исправлять проблему и вместо этого хотят, чтобы мы разработали способ устранения симптомов. Не так много другого можно предложить. Это характер ООП и статических переменных. – Nkosi
благодарит за комментарий. на самом деле я надеялся на обходной путь, похожий на нестатический «OneTimeSetUp» NUnit – Tsar
Вот что такое атрибут «TestInitialize» - это эквивалент! – toadflakz