这些天我常常会感到惊讶,但是这个小家伙真的拥有我的游击队风格:
正在测试的方法: 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,说“另一个进程正在使用该文件”。 为什么我无法访问刚刚创建的文件?
提前大事!
答案 0 :(得分: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");