J'écris des tests unitaires pour un projet C# en utilisant les outils de tests unitaires intégrés de Visual Studio, et beaucoup de ces tests nécessitent l'utilisation d'un fichier TestData.xlsx
.Écrire en toute sécurité des tests unitaires qui dépendent de la même ressource de fichier?
Actuellement, lorsque j'exécute mes tests, je remarque que le test précédent ne libère pas sa retenue sur le fichier à temps pour le test suivant. Cela provoque l'échec du test. Comment suis-je supposé écrire mes tests pour éviter que cela ne se produise?
Voici un exemple de ce que je fais face à:
[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);
}
}
Qu'est-ce que 'ExcelPackage'? Implémente-t-il 'IDisposable'? – Lee
Dans ce cas, il semble que vous ayez à mettre 'excelPackage' dans une méthode de démontage de test. – Lee
@Lee C'est une classe dans une bibliothèque appelée EPPlus pour interagir avec des documents Excel. Bonne prise; J'ai ajouté une méthode TestCleanup qui appelle Dispose(). Cependant, les tests échouent encore car je crois qu'ils fonctionnent en parallèle. –