gpt4 book ai didi

c# - 运行 XUnit 测试时 CefSharp 的 FileNotFoundException

转载 作者:行者123 更新时间:2023-11-30 23:05:43 25 4
gpt4 key购买 nike

我正在使用 CefSarp 在应用程序上使用 XUnit 进行一些测试。

但是测试崩溃了,但有一个异常(exception):

System.IO.FileNotFoundException: Could not load file or assembly 'CefSharp, Version=55.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138'or one of its dependencies. The system cannot find the file specified.

at CefSharp.CefSharpApp.OnBeforeChildProcessLaunch(CefSharpApp* , CefRefPtr* commandLine)

在 Xunit 问题跟踪器 (https://github.com/xunit/xunit/issues/4) 上,解决方法是将 shadowCopy 选项设置为 false。但这对我不起作用。

CefSharp 有一些文件需要成为下一个可执行文件 (https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies)。所有这些文件都存在于 bin 文件夹中,当我使用 System.IO.Directory.GetCurrentDirectory() 检查当前目录时,这是正确的文件夹。

我尝试使用 Kernel32 中的 SetDllDirectory 添加 bin 文件夹,但它没有任何改变。

我还尝试使用 Assembly.LoadFile() 手动加载程序集。此调用成功,但后来初始化 cef 时,异常仍然发生。所以问题可能不是找到程序集本身,而是 CefSharp 所需的文件。

我应该将所有 CefSharp 文件放在哪里以允许 XUnit 找到它们?我对集成在 VisualStudio 中的 Xunit 测试和 Xunit 控制台有同样的问题。

编辑:

问题已解决(请参阅 anwser)。除使用 SpecFlow 创建的测试外,所有测试均通过。

它抛出Could not load file or assembly but with CefSharp.Core this time.

最佳答案

问题是 CefSharp 不支持多个 AppDomain。CefSharp 存储库中单元测试的配置文件包含以下内容:

<configuration>
<appSettings>
<add key="xunit.appDomain" value="denied"/>
</appSettings>
</configuration>

这会阻止 XUnit 使用多个 AppDomain。此配置必须添加到每个测试库的 app.config 中。

CefSharp 测试还包含

var isDefault = AppDomain.CurrentDomain.IsDefaultAppDomain();
if (!isDefault)
{
throw new Exception(@"Add <add key=""xunit.appDomain"" value=""denied""/> to your app.config to disable appdomains");
}

检查是否使用了多个 AppDomain。

关于c# - 运行 XUnit 测试时 CefSharp 的 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48641137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com