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