验证属性或配置的java单元/集成测试
编写验证属性或配置的单元/集成测试有意义吗,因为任何中等到高度复杂的应用程序都包含大量配置(通过YAML或属性文件)
这些配置中的许多都派生运行时行为,即使它们被底层库或框架使用。验证配置在运行时是否正确使用是否明智
一个赞成的论点是,由于没有编译器安全性,我们需要以某种方式验证配置是否正确地指示了行为
争论的焦点是,我们是否在验证底层框架的实现
仅仅测试配置文件可能不够,因为它不能保证在运行时是否正确使用配置(可能会出现打字错误或其他类似错误)
# 1 楼答案
这在IMHO中是相当合理的,尤其是在谈到不断增长的虚拟化时。在我之前参与的一个项目中——一个mSOA平台,它可以轻松地支持(当时)数百个网站,我们发现大多数问题都是由于
那个些收据在很多时候也是乱七八糟的。这是Docker containers的一点。测试您的产品/服务正在使用的基础架构及其配置非常简单。我成功地使用了serverspec
# 2 楼答案
否。单元测试将告诉您测试线束中的工作原理,它与生产中的工作原理不同,也应该不同
当你说要验证配置时,你一针见血。测试和验证是两件完全不同的事情。如果您有办法在生产环境中验证运行时配置,它还将帮助您诊断运行时错误行为
有很多方法可以验证运行时配置。最简单也是最好的是日志记录(例如,“2016-09-2410:13:00连接到http://my-configured-server.example.com以获取用户令牌”)。不要只是将配置转储到不是端到端验证的日志文件中,而是将配置详细信息添加到日志消息中
配置问题通常是全有或全无;如果配置不正确,则不会发生任何事情,也不知道原因。(函数式编程尤其如此。)日志不仅可以告诉您配置是什么,还可以告诉您配置失败的时刻
还有其他一些巧妙的方法可以将配置细节添加到运行时中。例如,将详细的运行时详细信息附加到错误消息中,特别是在您的空间大于日志空间的电子邮件中。或者是一种调试模式,在这种模式下,将鼠标悬停在UI元素上会告诉您该类以及有关该元素的其他事实
集成测试(组件插在一起时工作)和冒烟测试(一些完整配置确实一些正确的)非常重要,如果您在部署时没有手动测试,我想说这是必要的,但它们不能替代运行时验证