对于我的测试用例,我什么都不需要做。现在,不论测试用例什么时候运行,today 都会是美国的假日土拔鼠日。只使用了五行代码,我就有了一个可工作的存根。在这个示例中,这个 mock 对象只能用于测试用例。如果需要将这个 mock 对象用于多个测试用例,那么可以给这个 mock 对象添加测试和模拟的代码,并重新使用它。
总之,我对 Ruby 的测试体验的评价是:非常必要(因为动态语言容易出错的特性),并且更强大。其中部分力量来自通过 Rails 使得代码生成、断言、数据库支持,以及诊断工具无缝地在一起工作的集成体验。
但是 Java 技术确实有自己的优势。在将测试集成到开发环境方面它做得更好,它还有更好的持续集成工具。也可以找到模拟最常见企业特性的更多框架。Java 开发人员有另一个理论优势:他们可以在没有数据库支持的情况下,更容易地运行应用程序。没有数据库支持就测试 Rails 应用程序几乎没有意义,因为许多 Rails 值是通过元编程(metaprogramming)把 SQL 特性编织起来而得到的。所以,Java 测试套件通常运行得更快,因为套件中的测试用例不需要访问数据库。
如果使用 Java 代码生成,Rails 可以为您提供一些关于如何使用测试生成增强您的代码生成的好主意。如果正在补充自己的测试框架,那么 Rails 的测试 API 既简单又漂亮。如果对超越 Java 编程语言感兴趣,那么 Rails 可以为轻量级的、数据库支持的应用程序提供一些真正的价值。
在这个系列的下一篇文章中,我将不再介绍 Rails,而是查看基于 Web 的建模策略。您将看到如何将代码生成用于动态语言。
参考资料