Problem innerhalb von NUnit-Tests

02/07/2009 - 10:39 von Maik | Report spam
Hallo zusammen,

einem Kollegen ist heute folgendes Problem innerhalb von NUnit-Tests
aufgefallen. Er wollte wàhrend eines Tests neue Verzeichnisse
innerhalb des Environment.CurrentDirectory anlegen. Am Ende jedes
Tests sollte dieses erstellte Verzeichnis wieder gelöscht werden.

Scheinbar ist es aber der Fall, dass der TaskRunner (ReSharper)
wàhrend der Durchführung des UnitTests noch einen Prozess auf dieses
Verzeichnis, bzw. auf die dort enthaltenen Dateien offen hat.

Wir haben den Sachverhalt mal in dieser Test-Klasse extrahiert.


using System;
using System.IO;
using NUnit.Framework;

namespace DirectoryWatchDog.Tests
{
[TestFixture]
public class FileSystemTests
{
private static readonly string testPath = "./Test";

[TestFixtureSetUp]
public void CreateTestSetEnvironment()
{
DirectoryInfo dir = new DirectoryInfo(testPath);
if (!dir.Exists)
{
dir.Create();
}
Console.WriteLine("Test Directory is : {0}",
dir.FullName);
}

[TestFixtureTearDown]
public void DestroyTestSetEnvironment()
{
DirectoryInfo dir = new DirectoryInfo(testPath);
if (dir.Exists)
{
dir.Delete(true);
}
}

[TearDown]
public void DestroyTestEnvironment()
{
DirectoryInfo dir = new DirectoryInfo(testPath);
foreach (FileInfo file in dir.GetFiles())
{
file.Delete();

}

}

[SetUp]
public void CreateTestEnvironment()
{
}

[Test]
public void Test1()
{
FileInfo file = new FileInfo(string.Format
(@"{0}\test.txt", testPath));
file.Create();

Assert.IsTrue(file.Exists);
}


}
}


Was machen wir falsch?

Danke schon mal für die Hilfe.

Gruß,
Maik
 

Lesen sie die antworten

#1 Maik
02/07/2009 - 11:15 | Warnen spam
Hi nochmal,

so ... nach einigen Untersuchungen hat es was gebracht, wenn man als
ersten Schritt in den TearDown-Methoden ein

GC.Collect();

aufruft.

Aber das kann doch eigentlich ncht die richtige Lösung sein.

Ähnliche fragen