NUnit单元测试在测试类中找不到非托管dll

时间:2010-08-23 15:05:03

标签: .net nunit pinvoke

我有以下情况:

  1. 我有一个有效的delphi dll(非托管)。我有一个有效的win表单应用程序(概念验证应用程序)。 dll(及其所有依赖项)将复制到应用程序的Bin / Debug目录中。

  2. 我创建了一个.NET托管库,它有一个类是dll的包装器。 dll和dll的所有依赖项都复制到/ Bin / Debug文件夹中。

  3. 在托管库的单元测试项目中,我为包装类创建了一个单元测试。当我运行单元测试时,会显示以下错误:

  4.   

    DAEcommerce.Logic.Tests.Infrastructure.L3.L3DatabaseConnectionTest.OpenClose_ProperParameters_ActiveSetToTrueAndFalse:   System.DllNotFoundException:无法使用   加载DLL'AttrbInterface.dll':A   动态链接库(DLL)   初始化例程失败。   (HRESULT异常:0x8007045A)

    有问题的dll被复制到单元测试项目的Bin / Debug文件夹中。我也尝试将其复制到Windows / system32,将其添加到Windows路径并将其复制到NUnit exe所在的文件夹中。它只是不起作用。

    我有以下问题:

    1. 有什么问题?
    2. 我怎样才能找到问题所在?
    3. 我该如何解决?

2 个答案:

答案 0 :(得分:1)

我在64位系统上遇到了与7z.dll和SevenZipSharp类似的问题。 7z.dll是32位,所以我必须确保使用nunit-x86.exe。我也不得不在NUnit设置中关闭影子复制,不知道为什么,但不会加载7z.dll。

答案 1 :(得分:0)

尝试使用Fusion Log Viewer实用程序从Windows SDK获取有关加载.NET程序集时实际发生情况的更多信息。