1
我有一個測試課,裏面有一些IDisposable項目。這是我在做這樣的事情第一次嘗試:如何處理MSTest中的IDisposable夾具成員?
private MemoryStream toolExampleMs;
private MemoryStream issueClassExampleMs;
private MemoryStream issueTypeExampleMs;
private MemoryStream uniqueIdExampleMs;
private Check exampleCheck;
public SuppressionDatabaseTest()
{
this.toolExampleMs = new MemoryStream(Encoding.UTF8.GetBytes(toolExample));
this.issueClassExampleMs = new MemoryStream(Encoding.UTF8.GetBytes(toolExample));
this.issueTypeExampleMs = new MemoryStream(Encoding.UTF8.GetBytes(issueTypeExample));
this.uniqueIdExampleMs = new MemoryStream(Encoding.UTF8.GetBytes(uniqueIdExample));
this.exampleCheck = new Check();
this.exampleCheck.IssueClass = "FooBarClass";
this.exampleCheck.IssueType = "FooBarType";
this.exampleCheck.Key = "FooBarExactWith?Unicode";
}
[ClassCleanup]
public void CleanupAll() // Error: CleanupAll has the wrong signature
{
toolExampleMs.Dispose();
issueClassExampleMs.Dispose();
issueTypeExampleMs.Dispose();
uniqueIdExampleMs.Dispose();
}
[TestCleanup]
public void Cleanup()
{
this.toolExampleMs.Seek(0, SeekOrigin.Begin);
this.issueClassExampleMs.Seek(0, SeekOrigin.Begin);
this.issueTypeExampleMs.Seek(0, SeekOrigin.Begin);
this.uniqueIdExampleMs.Seek(0, SeekOrigin.Begin);
}
不幸的是,ClassCleanup方法必須在MSTest的static
,這意味着沒有地方勾調用處理。這是否意味着我需要在每次單獨測試之前和之後重新構建這些流?
難道你不想要?這些流不應該用於在測試之間存儲或傳遞信息;無論每次測試或所有測試可能需要進行什麼設置和拆卸,測試都應該在理論上與訂單無關。他們的實際順序是什麼,不管它是按字母順序排列的,按照定義還是完全隨機排列,都沒有什麼區別,沒有測試應該取決於另一個測試是否成功。 – KeithS
@KeithS:流不會被任何測試修改。只是看起來很浪費 –