我们使用第三方库与他们的服务器软件进行通信,我们无法修改。通过抛出类似于以下内容的异常,对库的调用可能会失败:
class LibraryException : Exception {
internal LibraryException() {};
string ExceptionDetails {public get; internal set; }
}
根据'ExceptionDetails'的内容,我们的调用代码必须执行不同的操作(有些错误是致命的,有些则不是),我想测试这段代码。我遇到的问题是因为'LibraryException'有一个内部构造函数,我找不到创建一个的方法。我尝试了新的一个,派生一个子类并使用Activator.CreateInstance。有什么方法可以解决这个问题吗?
我已经考虑过更改构建,因此对于一个测试子集,它会链接到不同的二进制文件中,但这似乎是一个维护噩梦,所以目前该区域仅由集成测试覆盖
有什么建议吗?
答案 0 :(得分:2)
在使用接受Activator.CreateInstance
:
BindingFlags
一起使用
Activator.CreateInstance(typeof(LibraryException),
BindingFlags.NonPublic | BindingFlags.Instance,
null,
null,
null);