2012-02-21 37 views
0

掛起我往往會得到驚訝這些天,但這個小雞姦真正擁有我的游擊戰風格:滯留在凌波:測試文件相關的等級與IOException異常

測試方法: CopyAllFiles(sourceDir,TARGETDIR) - 我想,不需要解釋它的作用。

在我的測試中,我在調用測試主題之前創建了兩個目錄。此外,我將三個文件添加到在sourceDir位置創建的目錄中。讓代碼說:

FileSystemService serviceUnderTest = new FileSystemService(); 
string sourcePath= Path.Combine(_dateiPfad, "quelle"); 
string destinationPath= Path.Combine(_dateiPfad, "ziel"); 

Directory.CreateDirectory(sourcePath); 
Directory.CreateDirectory(destinationPath); 
File.Create(Path.Combine(sourcePath , "Foo.txt")); 
File.Create(Path.Combine(sourcePath , "Bar.csv")); 
File.Create(Path.Combine(sourcePath , "Baz.xls")); 

serviceUnderTest.CopyAllFiles(sourcePath, destinationPath); 
IEnumerable<string> sourceFiles= from fileName in Directory.GetFiles(sourcePath) select fileName; 
IEnumerable<string> destinationFiles= from fileName in Directory.GetFiles(destinationPath) select fileName ; 

Assert.IsTrue(sourceFiles.SequenceEqual(destinationFiles)); 

我得到一個IOException說「文件正在被另一個進程使用」。 爲什麼我無法訪問剛創建的文件?

大thx提前!

回答

2

File.Create()返回創建的文件的FileStream。您需要關閉流之前,你可以在你的CopyAllFiles訪問該文件()方法:

FileStream foo = File.Create(Path.Combine(sourcePath, "Foo.txt")); 
foo.Close(); 

你也可以使用WriteAllText寫出來你的測試文件:

File.WriteAllText(Path.Combine(sourcePath, "Foo.txt"),"FooTest"); 
+0

謝謝,Leom!這是一個很好和簡潔的答案! – 2012-02-21 12:42:44