如何为基于maven和ruby/jruby的项目进行兼容性测试
本文未经作者允许,不得以任何形式转载或引用
现在做web前端和应用程序的功能测试,主要通过BDD的形势去实现。因此,最常用开源BDD测试框架就是Cucumber,而Cucumber是一种RUBY的开源框架,为了更好的快捷的实现ruby的特性,我在此基础之上,认为ruby和java的配合可以让测试更加的快捷,尤其是针对java项目。因此这里我用一个java的项目作为例子,和大家分享在测试过程中遇到的常见问题。
问题: 为什么是maven+java+jruby的项目
因为本文特别针对java项目,但例如对于web项目,我们可以用同样的思路去进行尝试开发,而主要想强调的是,以前咱们在使用ruby开源框架做测试的时候,完全可以迁移到jruby下进行,例如常用的watir还有selinum都有jruby下得版本,bdd开源框架Cucumber同样有jruby版本,因此,客观的可以得出,我们可以将大部分的ruby项目迁移到jruby下,将我们自己的ruby框架打包成gem,因此更容易管理和维护。
问题: 如何在maven项目中进行兼容性测试
作为一个自动化测试人员,我想这个问题大家一定以前遇到。在测试过程中,我们一直测试的某个package要进行变化,此处的问题就是现在所有的包要改名,以前所有的包的前缀是com.zhaopeng.example
,以前维护的版本号是1.0.11, 现在开发人员为了满足客户需求,将所有的包名前缀改为com.csdn.example,新发布的包的版本号为1.0.12,所有包打包发布后的格式为.jar。 老板本和新版本必须同时维护,因为还有一部分客户正在使用老板本。在测试中,我们需要进行功能测试,这就意味着测试中必须考虑到新-老两个版本,测试工具中必须可以识别出两个版本,才能正确的从指定的包中导入所需要的依赖函数。
举个例子
在测试框架中,我们有一个文件叫 menu.rb, 功能就是测试提供的.jar包中的涉及的menu的功能
hash = Hash.newjarPath = "D:\s.jar"classPath = "META-INF/MANIFEST.MF"entry = jarFile.getJarEntry(classPath);input = jarFile.getInputStream(entry);isr = InputStreamReader.new(input);reader = BufferedReader.new(isr);while ((line = reader.readLine()) != nil) if(line.split(":").length == 2) hash[line.split(":")[0].strip] = line.split(":")[1].strip endendreader.close();hash.each do |key,value| puts key.to_s + "=>" + value.to_send