刚刚结婚:Joomla和茉莉花
Joomla中目前自定义JavaScript库的集合还没有为其编写任何测试。今年夏天,作为2016年Google Summer of Code项目的一部分,我们将实现这些库的90%以上的测试覆盖率。本文将讲述这一过程。
正如俗语所说,测试是任何软件系统的一个主要要求。我今年夏天作为Google Summer of Code学生,在Joomla!的职责是编写JavaScript测试。Joomla CMS使用一组自定义编写的JavaScript库。我打算为这些库编写测试,目标是超过90%的测试覆盖率。实现这一点将为这些库的未来的增强提供一个坚实的基础。我正在使用Jasmine作为测试框架,Karma作为测试运行器。所以在这篇文章中,我将与大家分享Joomla和Jasmine的故事。
我非常兴奋地写了我与Joomla!的GSoC项目的第一篇文章。在深入项目的细节之前,我将先简单介绍一下自己。
我是Thanuditha Ruchiranga Wickramasinghe,目前是斯里兰卡莫拉图瓦大学计算机科学与工程系的应届本科生。这是我第二次作为GSoC学生,去年的GSoC帮助我学到了很多以前从未接触过的新知识,我非常确信这次与我的导师Ashan Fernando和Yves Hoppe的合作将是一次更好的经历。
接下来是Joomla和Jasmine的故事,在我被选中作为GSoC学生进行项目之前,我对一些潜在的JavaScript测试框架进行了一些初步研究。我比较了它们在项目要求方面的优缺点。与我的导师讨论观察到的结果后,我们决定Jasmine是Joomla!的完美匹配。接下来,我们寻找测试运行器,Karma显然是最佳选择。
使用Karma的优势在于,它是专门开发出来帮助开发者免受配置测试环境的麻烦的。Joomla!使用Travis持续集成服务在GitHub上运行测试。每次代码提交或PR都会触发所有测试的运行。Travis正在关注着你!
根据Travis的测试结果,GitHub会显示所做的更改是否破坏了现有的功能。Karma让设置所有这些配置变得非常简单。因此,Karma最终成为站在Joomla和Jasmine之间的红娘。以下是一个简单的示意图,详细说明了测试执行流程的概念。
在实现方面进行详细说明,项目实施中的第一个任务,也是可能最困难的任务,是奠定基础并设置测试环境,以运行前几个测试用例。我们决定使用RequireJS与Karma一起使用,以便能够在需要的地方动态加载必要的JavaScript代码作为模块。由于Karma的存在,配置在Travis上运行测试并不困难。还使用了jasmine-jquery库,这使得编写测试更加简单,因为它为jQuery框架提供了一套全面的自定义匹配器。还使用了几个其他插件,如Karma 覆盖率报告器、Karma 详细报告器和RequireJS 文本插件,以增加工作的专业性和其输出的质量。目前,我们有一个等待合并到gsoc16_js-unit-tests存储库的PR,其中包含为第一个选择的JavaScript库‘JCaption’编写的全面测试用例。
以下是包含JCaption库所有测试用例通过以及迄今为止的库测试覆盖率的总结的Travis构建日志截图。
以下展示了运行此组测试用例的SPEC代码的摘录。DOM设置在单独的文件中完成,这里作为依赖项动态加载。
本文主要介绍了从头开始构建JavaScript测试环境的过程。在我的下一篇文章中,我将与您分享在为不同的库编写JavaScript测试时遇到的挑战以及如何克服它们。下次再见!
附言:特别感谢Elisa Foltyn帮助我制作这篇有趣的文章封面图片。 :)
在Joomla社区杂志上发布的一些文章代表了作者在特定主题上的个人观点或经验,可能不符合Joomla项目官方立场。
通过接受,您将访问https://magazine.joomla.net.cn/外部提供的第三方服务
评论