2012-02-21 45 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