我正在开发一个严重依赖外部 dll 的应用程序,我的应用程序需要支持新版本的 dll 以及向后兼容旧版本。
有什么好方法可以让我的单元测试针对所有这些不同的 dll 版本,而无需在新版本的 api 发布后立即重写测试?这个怎么处理最好?
谢谢!
我正在开发一个严重依赖外部 dll 的应用程序,我的应用程序需要支持新版本的 dll 以及向后兼容旧版本。
有什么好方法可以让我的单元测试针对所有这些不同的 dll 版本,而无需在新版本的 api 发布后立即重写测试?这个怎么处理最好?
谢谢!
编写一个包装外部 DLL 的适配器或外观。让它实现一个接口 IExternalDLL (当然选择一个更好的名字),它记录/指定您对外部 DLL 的需求;它不必完全模仿实际实现的函数签名。
编写一组针对接口的“契约测试”,以您期望接口工作的方式。
现在,您可以为每个新版本编写不同的适配器 - 以防从 v1 到 v2 发生一些重大更改。您的客户端由于接口而被抽象。适配器/外观的工作是确保相应版本的 dll 符合合同测试。您编写一组测试并使用适配器/外观的所有实现来练习它。下次推出新版本时 - 您可以
如果您使用的是 nant、team build 或类似工具,您可以将 lib 二进制文件 xcopy 到您的测试项目在运行测试之前从中获取其二进制文件的文件夹中。
伪示例:
这很简单,应该很容易尝试。注意:“编写适配器或外观”答案是使您的程序针对不同版本工作的首选方式,所以也这样做,我只是在谈论针对多个版本进行实际测试。