c# - 为什么我不能通过 Resharper Test Runner 单元测试从单元测试中删除 %Program Files% 中的文件?

标签 c# unit-testing testing resharper

我正在尝试编写一个测试,在它的固定装置设置中,它备份一个文件并删除原始文件,在没有原始文件的情况下运行测试,然后在拆解中从备份中恢复原始文件。该文件位于我的 %ProgramFiles% 文件夹中。我在 fileInfo.Delete() 语句中收到 UnauthorizedAccessException。我从同一台机器上未从 Resharper Test Runner 运行的另一个测试项目中删除此文件没有问题。

我无法将文件移动到其他地方 - 它是 ssapi.dll,一个为 Visual SourceSafe 安装的 dll。 (是的,我正在单元测试中做一些侵入性的事情。)

这两种方式都是同一个用户(我)——我通过任务管理器检查过。我的用户帐户是本地管理员组的成员。还有哪些其他因素决定我对文件执行某些操作的“授权”?

已解决:虽然它没有回答我最初的问题(我仍然想知道答案),但我已经找到了一个用于测试目的的解决方法,使用 System.Security.Permissions 框架,做一个需求对于 FileIOPermissionAccess.Read 在需要文件(用于互操作调用)的应用程序(非测试)代码中,以及在需要该文件不存在的场景的代码测试中拒绝。这现在应该可以工作(我喜欢学习一些关于 System.Security.Permissions 命名空间的知识)!

最佳答案

不是真正的解决方案,但我会考虑从不同的角度解决这个问题。

您或许可以考虑将目录更改为 %AppData%(您可能还需要为您的主应用程序进行此更改)。

它可能会解决您的问题,并且在您迁移到 Vista 时也会很顺利,因为 UAC 可能会阻止您(或应用程序用户)使用 %ProgramFiles% 目录。

关于c# - 为什么我不能通过 Resharper Test Runner 单元测试从单元测试中删除 %Program Files% 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/100070/

相关文章:

android - 使用 Espresso 测试 Android NavigationView 菜单项

c# Ionic.zip - 如何提取受密码保护的 zip

c# - Datalogic 条形码/重量扫描仪

java - JMockIt 安全异常签名者信息不匹配

java - 使用 Mockito 的通用 "any()"方法

objective-c - 为类的所有实例模拟 OCMock 中的方法

ruby-on-rails - 如何从 rspec Controller 测试中省略某些内容?

C# 在运行时返回异常

c# - 无法将自定义 .css 添加到嵌套的 ASP.NET 表格单元格控件

c++ - 如何验证传递给模拟函数的参数的派生类型