如何针对不同版本的外部dll api对我的项目进行单元测试?

dev*_*ost 4 c# testing mbunit nunit unit-testing

我正在开发一个严重依赖外部DLL的应用程序,我的应用程序需要支持新版本的dll以及向后兼容旧版本.

是否有任何好方法让我的单元测试针对所有这些不同的dll版本,而不需要在新版本的api发布后立即重写测试?如何最好地处理?

谢谢!

Gis*_*shu 5

编写包装外部DLL的适配器或Facade.让它实现一个接口IExternalDLL(当然选择一个更好的名字),它从外部DLL记录/指定你的需求; 它不必完全模仿实际实现的函数签名.

编写一组针对接口的"合同测试",以及您期望接口工作的方式.

现在,您可以为每个新版本编写不同的适配器 - 如果从v1到v2发生一些重大更改.您的客户端由于接口而被抽象化.它是适配器/外观的工作,以确保相应的dll版本符合合同测试.您编写了一组测试并使用适配器/外观的所有实现进行练习.下次推出新版本时 - 你可以

  • 如果满足您的需要,请使用最后一个适配器/外观
  • 推出一个新的来修复任何重大变化; 确保您针对合同测试运行它,以便您的客户端不会破坏此适配器.