【问题标题】:SpecFlow tests failing with Access Denied ExceptionsSpecFlow 测试因访问被拒绝异常而失败
【发布时间】:2011-05-24 09:39:29
【问题描述】:

在启动并运行 Orchard CMS 并检查到我们的 Subversion 存储库后,我一直在查看现有的测试覆盖率,特别是 SpecFlow 测试。

当我尝试从 CodeRush 测试运行程序或 NUnit GUI (v2.5.10) 运行测试时,我在 67 个测试中遇到异常:

Orchard.Specs.AdditionFeature.AnonymousUserCanSeeTheHomePageButNotTheDashboard: System.UnauthorizedAccessException : 访问路径 'C:\Users\richard.slater\AppData\Local\Temp\Orchard.Specs\5dchvodt.b1i\Modules\ Orchard.Packaging\Views\.svn\all-wcprops' 被拒绝。 在 System.IO.__Error.WinIOError(Int32 错误代码,字符串可能全路径) 在 System.IO.File.InternalCopy(字符串源文件名,字符串 destFileName,布尔覆盖) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 51 中的 Orchard.Specs.Util.PathExtensions.FileCopy(Path sourcePath, Path targetPath, Path sourceFile) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 22 中的 Orchard.Specs.Util.PathExtensions.c__DisplayClass1.b__0(路径文件) 在 Bleroy.FluentPath.PathCollection.ForEach(Action`1 动作) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Util\PathExtensions.cs:line 20 中的 Orchard.Specs.Util.PathExtensions.DeepCopy(Path sourcePath, Path targetPath) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Hosting\WebHost.cs:line 202 中的 Orchard.Specs.Hosting.WebHost.CopyExtension(String extensionFolder, String extensionName, ExtensionDeploymentOptions deploymentOptions) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\WebAppHosting.cs:line 132 中的 Orchard.Specs.Bindings.WebAppHosting.GivenIHaveModule(String moduleName) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\WebAppHosting.cs:line 161 中的 Orchard.Specs.Bindings.WebAppHosting.GivenIHaveACleanSiteWith(String virtualDirectory, Table table) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\OrchardSiteFactory.cs:line 23 中的 Orchard.Specs.Bindings.OrchardSiteFactory.GivenIHaveInstalledOrchard(String virtualDirectory) 在 C:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\Bindings\OrchardSiteFactory.cs:line 16 中的 Orchard.Specs.Bindings.OrchardSiteFactory.GivenIHaveInstalledOrchard() 在 TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(对象 [] 参数,ITestTracer testTracer,时间跨度和持续时间) 在 TechTalk.SpecFlow.TestRunner.ExecuteStepMatch(BindingMatch 匹配,对象 [] 参数) 在 TechTalk.SpecFlow.TestRunner.ExecuteStep(StepArgs stepArgs) 在 TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() 在 c:\Project\Damovo.co.uk_NEW\src\Orchard.Specs\PermissionModel.feature:line 28 中的 Orchard.Specs.AdditionFeature.AnonymousUserCanSeeTheHomePageButNotTheDashboard()

我曾尝试以管理员身份执行测试,但我对 SpecFlow 有真正的了解,所以我怀疑我遗漏了一些关键的东西。

【问题讨论】:

    标签: .net svn nunit orchardcms specflow


    【解决方案1】:

    看起来它正在尝试访问隐藏的 Subversion 文件夹 (.svn),但它们根本无法访问。可能的原因有:

    • 您当前操作的用户帐户没有足够的访问权限(读取)。尝试在顶级存储库文件夹“属性”屏幕上的“安全”选项卡上为当前登录的用户设置这些权限- 更改应传播到所有较低的文件夹。
    • 有一个 Subversion 客户端(如 TortoiseSVN)在后台运行,它打开了这些文件以供读取/写入。这更有可能。尝试关闭它(或者如果没有关闭它的选项,则终止 SVN 客户端进程),看看会发生什么。

    弄乱内部 .svn 文件可能很危险,并且会损坏您签出的存储库文件夹。我不知道 SpecFlow 是否在此过程中修改了这些文件 - 如果没有,那很好

    还有一个解决方案将存储库文件(通过 TortoiseSVN 导出选项)导出到单独的文件夹(SVN 相关的东西不会被复制),做所有处理副本,每次您想提交时 - 将更改的文件复制回 SVN 绑定文件夹。

    【讨论】:

    • 让“所有人”完全控制文件夹不起作用。从 HG 存储库克隆了 Orchard,现在我在 HttpClient.cs 中遇到了一个异常,怀疑这是因为测试期望在 localhost 而不是 localhost:<port-num> 上看到 Orchard,我将进一步调查。感谢您的帮助以及您对社区的插件贡献。
    猜你喜欢
    • 2012-01-02
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2014-11-19
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多