利用Ruby简化你的Java测试
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
作者 Mike Bria译者 张龙 发布于 2008年7月17日 上午1时39分
Google最近开源了其基于xUnit的C++单元测试框架。项目开发者Zhanyong Wan说在Google内部已经有数以千计的C++开发者在使用该框架,并且已经持续好几年了。
根据Google所述,此次发布的主要亮点体现在:
C++社区一直都觉得他们的单元测试工具不如Java和C#等其他现代语言的好,很多人还会问:“为什么还要用另一个工具?它有什么特别的?”。在其wiki的Faqs中,Googlers尝试去解答这些问题。他们说他们并没有宣称其工具要比现存的好,而仅仅是将对其工作有帮助的一些功能整合起来。从该站点上我们看到:
我们希望这个列表能帮助你判定Google Test是否对你也有帮助:
- Google Test被设计为便携式的。在很多STL类型(如std::string及std::vector)无法编译的地方它都能正常执行。它无需异常或者RTTI。所以,它能运行在Linux、Mac OS X、Windows及一些嵌入式操作系统上。
- 事实证明Nonfatal断言(EXPECT_*)可以节省大量时间,因为他们使得在一次单独的编辑——编译——测试周期中能报告多个失败。
- 编写可以生成信息的断言非常简单:就用流(stream)语法来附加任何额外的信息就行,如ASSERT_EQ(5, Foo(i)) << " where i = " << i;。它不需要新的宏或者特殊的函数。
- Google Test自动检测你的测试,你如果想运行测试的话就无需列举他们。
- 没有一个框架能预料到你所有的需求,因此Google Test提供了EXPECT_PRED*以方便地扩展你的断言词汇表。通过良好的语法,你可以使用EXPECT_PRED*来方便地定义你自己的断言宏。
- Death tests非常方便,它能确保恰当的情况可以触发你在产品中的断言。
- 当断言失败是来自于内部的过程或者循环时,SCOPED_TRACE有助于你了解断言失败的上下文。
- 你可以使用命名模式来决定运行哪些测试。当你想快速重现某个失败时这会节省你大量时间。
Saptarshi Purkayastha花了一些时间来调研该框架并在其博客上写了一些想法。他的反应是积极的。
该框架另一个让人称道的地方就是学习其基础与高级特性都是那么容易。它与xUnit非常像并且具备了可以与CppUnit抗衡的优势。你可以从这里学习基础,从这里学习高级特性。Predicate Assertions可能是我最喜欢的特性之一了,当我们调试遇到麻烦时就可以在程序中使用该特性。还有很多其他的断言,我们还没有深入地研究他们。但是自从第一次看到该框架,我们很多人就将它作为最好的测试框架之一了...
根据wiki所述,你可以查看初级手册以尽快上手Google Test,然后请参考高级指南以了解更多内容。
可从这里下载该框架,尝试一下,然后告诉社区你的想法!
查看英文原文:Announcing: New Google C++ Testing Framework
本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。
InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。
在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。
本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。
人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。
在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。
2 条回复
回复