我已经阅读了关于单元测试各种应用程序的有用性的几个主题。这些意见可以从“一直测试所有事情”到“单元测试无用”,以及其间的所有内容(“测试有意义的测试”)。我倾向于向中间倾斜。单元测试第三方ORM
这使我想到我的问题。我想,以决定是否将是有益的或实用的有一些基本的单元测试测试的第三方ORM的建议在这种SO帖子: link text
一些基准测试可以作为对未来的重大更改保险有用,这取决于你如何使用该工具。例如,不是模拟整个n层链(我不是在不需要的时候嘲笑),只需使用ORM工具来创建,读取,更新和删除一个典型的对象/记录,并且使用(测试)数据库上的直接SQL语句验证操作。这样,如果第三方供应商稍后更新了某些会破坏其基本功能的内容,并且项目的新开发人员可以很容易地看到如何使用单元测试示例中的ORM工具。
我的主要保留下面这个建议是,它需要太多的设置,将是一个头痛要维护,总而言之,它不会在我们的环境中实际。下面是一些点的总结考虑:
- 我们正在使用的ORM需要创建和其数据访问层注册,并通过身份验证的用户相关联的静态数据源对象(S)。这需要大量的测试设置,并且在没有用户登录的构建服务器上可能会出现问题。
- ORM供应商在发布新更新和不打破基本功能方面拥有相当不错的记录。此外,无论何时何时将ORM更新至最新版本,我都会想到该应用程序不会直接进入生产环境,但是无论如何都会进行彻底的回归测试。
- 在这种环境下维护单元测试的测试数据库是有问题的。在每个主要发行版之后,测试数据库将被清除,并使用混淆了敏感数据的分段替换数据库备份。我会想象为了有ORM单元测试的测试数据库,我们需要运行一些脚本/代码来将数据库设置为“测试”状态。再次设置和维护太多。
- 最后ORM文档/帮助新开发人员。我可以看到这样的事情可能会有用。但是,ORM供应商提供了相当不错的文档/帮助演示应用程序。所以编写单元测试似乎并不值得所有的努力。
那么,为了确保ORM完成它应该做的事情(这是CRUD),是否值得去解决所有这些问题?无论如何,它不应该是供应商的责任吗?