我正在使用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這是一個名爲EPPlus的類庫,用於與Excel文檔進行交互。接得好;我添加了一個調用Dispose()的TestCleanup方法。但是,測試仍然失敗,因爲我相信它們並行運行。 –