Visual Studioの組み込みユニットテストツールを使用してC#プロジェクトの単体テストを作成していますが、これらのテストの多くはファイルTestData.xlsx
を使用する必要があります。同じファイルリソースに依存する単体テストを安全に記述しますか?
現在、私がテストを実行したとき、私は、前回のテストでは、次回のテストで使用するためにファイルを保持していないことに気付いています。これにより、テストが失敗します。これを防ぐためにテストを書くにはどうすればいいですか?ここで
は私が扱ってるものの例である:
[TestClass]
public class ExcelWorksheetExtensionTests
{
private ExcelPackage excelPackage;
private ExcelWorksheet excelWorksheet;
[TestInitialize]
[DeploymentItem(@"Assets\TestData.xlsx")]
public void TestInitialize()
{
FileInfo fileInfo = new FileInfo(@"Assets\TestData.xlsx");
this.excelPackage = new ExcelPackage(fileInfo);
this.excelWorksheet = this.excelPackage.Workbook.Worksheets["Sheet1"];
}
[TestCleanup]
public void TestCleanup()
{
this.excelPackage.Dispose();
}
// This test may succeed...
[TestMethod]
public void TestGetRowIndexForExistingName()
{
Assert.AreEqual(this.excelWorksheet.GetRowIndex("Object49").Value, 6);
}
// ...But this test will fail because TestInitialize re-runs too quickly.
[TestMethod]
public void TestGetRowIndexForMissingName()
{
Assert.IsFalse(this.excelWorksheet.GetRowIndex("NonExistentName").HasValue);
}
}
「ExcelPackage」とは何ですか? 'IDisposable'を実装していますか? – Lee
その場合、テストティアダウンメソッドで 'excelPackage'を処理する必要があるようです。 – Lee
@Lee ExcelドキュメントとやりとりするためのEPPlusというライブラリのクラスです。良いキャッチ; Dispose()を呼び出すTestCleanupメソッドを追加しました。しかし、私はそれらが並行して走っていると信じているので、テストはまだ失敗します。 –