为什么第三方DLL需要在单元测试中预加载

时间:2016-06-02 11:45:36

标签: c# .net unit-testing dll .net-assembly

我们有第三方DLL(lib1.dll),它是Win32 .NET程序集。同时,我们编写了一个引用lib2.dll

的类库(lib1.dll

之后,我们编写了单元测试(通过NUnit)来测试lib2,并发生异常:

Could not load file or assembly or one of its dependencies.
LIB1:
using System;
using System.Diagnostics;

public class Helper
{
    public Helper()
    {
    }

    public static void Execute()
    {
        Trace.WriteLine(DateTime.Now);
    }
}
LIB2:
namespace lib2
{
    public class Manager
    {
        public int Add(int a, int b)
        {
            Helper.Execute();
            return a + b;
        }
    }
}
NUnit测试:
[Test]
public void Foo()
{
    var manager = new Manager();
    Assert.AreEqual(5, manager.Add(2,3));
}

我们的代码与上面的行为相同。测试执行时,Helper.Execute()会抛出异常,表示无法加载程序集lib1.DLL

最奇怪的是我们无法重现这个问题。但是,我们可以通过添加这样的行预加载代码来解决此问题:

[Test]
public void Foo()
{
    var pre_load = new Helper();
    var manager = new Manager();
    Assert.AreEqual(5, manager.Add(2,3));
}

但我们仍然不知道根本原因。有没有人以前遇到过这个问题,或者有人能给我一些提示如何进行诊断吗?

0 个答案:

没有答案