3

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メソッドstaticはMSTestに含まれている必要があります。つまり、呼び出しをフックして破棄する場所がありません。これは、個々のテストの前後にこれらのストリームを再構築する必要があることを意味しますか?

4

1 に答える 1

3

簡単な答えはイエスです。各テストの前にこれらのストリームを再構築し、各テストの後に破棄する必要があります。これは、[TestCleanup]属性と[TestInitialize]属性を使用すると簡単です。

したがって、テストクラスでストリームを作成する代わりに、SuppressionDatabaseTest use [TestInitialize]

于 2012-09-04T22:18:35.733 に答える