使用内部构造函数对第三方异常的异常处理进行单元测试

时间:2011-03-31 10:06:59

标签: .net unit-testing

我们使用第三方库与他们的服务器软件进行通信,我们无法修改。通过抛出类似于以下内容的异常,对库的调用可能会失败:

class LibraryException : Exception {
    internal LibraryException() {};
    string ExceptionDetails {public get; internal set; }
}

根据'ExceptionDetails'的内容,我们的调用代码必须执行不同的操作(有些错误是致命的,有些则不是),我想测试这段代码。我遇到的问题是因为'LibraryException'有一个内部构造函数,我找不到创建一个的方法。我尝试了新的一个,派生一个子类并使用Activator.CreateInstance。有什么方法可以解决这个问题吗?

我已经考虑过更改构建,因此对于一个测试子集,它会链接到不同的二进制文件中,但这似乎是一个维护噩梦,所以目前该区域仅由集成测试覆盖

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在使用接受Activator.CreateInstance

的重载时,它应与BindingFlags一起使用
Activator.CreateInstance(typeof(LibraryException),
    BindingFlags.NonPublic | BindingFlags.Instance,
    null,
    null,
    null);