執行我的測試套件(使用ReSharper)時出現問題,看起來好像多個測試類一起運行時靜態結果集衝突,而不是單獨的問題跑。結構,在本質上是與此類似:使用基類繼承的MSTest中的「共享」測試設置(ClassInitialize)
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個單元測試每個測試類和測試設置都比上面的例子複雜得多。
你明白這個問題是由於靜態變量的使用/設計較差,但不願意解決問題,而是希望我們想出解決症狀的方法。沒有其他建議。這是OOP和靜態變量的本質。 – Nkosi
感謝您的評論。實際上我希望有一種解決方法,類似於NUnit的非靜態'OneTimeSetUp' – Tsar
這就是'TestInitialize'屬性的等價物! – toadflakz