次のテストクラスを検討してください。
[TestClass]
public class ExampleTests
{
[TestMethod]
public void FileDoesNotExists()
{
Assert.IsFalse(System.IO.File.Exists("testfile.txt"));
}
[TestMethod]
[DeploymentItem("testfile.txt")]
public void FileExists()
{
Assert.IsTrue(System.IO.File.Exists("testfile.txt"));
}
}
これらのテストが実行される順序によっては合格する場合がありますが、定義された順序で実行される保証はないため、実際の動作は非決定的です...明らかにこれは悪いことです。
TestCleanupAttributeを調べて実験しましたが、両方のテストに合格するための信頼できる方法を見つけることができませんでしたが、これを行う簡単な方法があるはずです。そのような方法はありますか?
更新:テストフレームワークは、DeploymentItemsが一度デプロイされると変更されないことを前提としているため、これは不可能のようです。したがって、各アイテムは1回だけデプロイされます。短期的には、この動作を必要としないようにテスト対象のコードを変更しました。長期的には、この仮定を行わない属性を実装する可能性があります。