我正在为封装我无法访问的 dll 的 Wrapper 编写 UnitTests。
此 dll 会将文件写入给定位置,并在 dll 的整个生命周期内持有它们的句柄。
在我的 UnitTests 运行后,我想删除在测试期间由 dll 写入的所有文件。
但是,如果我使用 MSTest Attributes[TestCleanup]
[ClassCleanup]
或[AssemblyCleanup]
,我将无法删除所有文件,因为 dll 仍在加载并且其对文件的句柄仍然存在。
在 MSTest 卸载 testet dll 后,有没有办法运行最后一个方法?
现在,我只看到 2 个可能的解决方案,没有一个听起来很吸引人:
- 创建一个 Wrapper 仅用于运行将 testet Wrapper 封装在我可以卸载的 AppDomain 中的测试
AssemblyCleanup
(大量工作) - 使单元测试保存写入文件的路径并在下一次测试运行时删除这些文件(这仍然会给我留下垃圾,但至少这些垃圾不会干扰下一次运行)