我有一堆包含在
TestFixture
属性中的测试。
每个测试用例当前都以
FileParamater
的形式打开一个文件并将其传递给函数:
string path = "./filepath";
FileParameter file = new(new FileStream(path, FileMode.Open));
_ = await SomeFunction(file);
file.Data.Close();
我想并行执行夹具中的每个测试用例。我已经能够使用
[Parallelizable(ParallelScope.Children)]
对其他灯具执行此操作,它可以同时运行灯具内的所有测试。问题是,如果测试正在打开和关闭文件,那么如果它们同时运行,则该文件将在其他测试有机会使用它之前关闭。
并行化的最佳方法是什么,以便每个测试都可以打开相同的文件并同时使用它?
不能选择将文件内容作为字符串读取并使用它。
如果每个测试只需要读取访问权限,那么您可以通过定义
FileAccess
和 FileShare
常量在每次执行之间共享只读文件。
string path = "./filepath";
FileParameter file = new(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read));
_ = await SomeFunction(file);
file.Data.Close();