今天想在项目中应用Cucumber进行测试,感觉不错,可惜在命令行窗口中输出的结果中文全变成了乱码,完全影响测试结果的可读性(Cucumber的强项就在此啊)。于是开始寻找解决的方法。
1、最先想到的是cucumber输出的是UTF-8编码,而且整个Rails站点的环境也都是UTF-8了,输出到DOS命令行,显然会出现中文乱码。
于是Google到http://www.iteye.com/topic/120172,里面提出的解决方法是使用 chcp 65001修改cmd的内码页为Unicode。直接输入unicode没问题了,可惜这种方式执行ruby代码会出现Bad file descripto错误!其原因大致是出在ruby端了。
无奈只能另寻他路。
2、换一种思路,考虑到ruby的动态特性,想到覆盖Kernel中的print和puts方法,将输出的内容转换为GB2312,再输出岂不解决问题?
于是翻阅cucumber的代码,发现此为正解,而且cucumber已经考虑到这种情况,有文件cucumber-0.1.16\lib\cucumber\formatters\unicode.rb为证。
可惜很遗憾,cucumber中考虑到需要转换的内码从1251到1252(WinLatin1),没有考虑到中文windows中内码代码为936,因此转换UTF-8输出内容的功能没有启用。另外是不是把936加上就解决问题了呢?测试过好像不行,原因就没深究了。
codepages = (1251..1252)
if codepages.include?(codepage)
Cucumber::CODEPAGE = “cp#{codepage}“
..
最终的解决方法是讲unicode.rb修改至如下:
# Require this file if you need Unicode support.
require ‘cucumber/platform’
require ‘cucumber/formatters/ansicolor’
$KCODE=’u’ unless Cucumber::RUBY_1_9
#if Cucumber::WINDOWS_MRI && `chcp` =~ /Active code page: (\d+)/
#codepage = $1.to_i
#codepages = (1251..1252)
#if codepages.include?(codepage)
Cucumber::CODEPAGE = “GB2312″ #强制将输出内码为GB2312
require ‘iconv’
module Kernel
alias cucumber_print print
def print(*a)
begin
cucumber_print *Iconv.iconv(Cucumber::CODEPAGE, “UTF-8″, *a)
rescue Iconv::IllegalSequence
cucumber_print(*a)
end
end
alias cucumber_puts puts
def puts(*a)
begin
cucumber_puts *Iconv.iconv(Cucumber::CODEPAGE, “UTF-8″, *a)
rescue Iconv::IllegalSequence
cucumber_puts(*a)
end
end
end
#end
#end
分享到:
相关推荐
为了解决这个问题,下载 ANSICON v1.66,解压后放到一个无空格和中文字符的目录,然后运行 `ansicon.exe` 并按照提示安装。 7. **运行 Cucumber**: 完成所有配置后,可以在包含 Cucumber 规范的目录下运行 Cucumber...
项目移至 LEARNINGWELL 内部 GITLAB 服务器Cucumber STDDTool 格式化程序将测试结果发送到 STDDTool 的 -formatter开始: 在您的 Gemfile 中: gem 'stddtool' 并在您的/support/env.rb文件或支持目录下的任何其他...
Cucumber使用Hamcrest来创建和比较期望的测试结果。 cucumber-java-1.2.2.jar是Cucumber Java模块,它提供了与Java代码集成的能力,允许开发者编写步骤定义来实现Gherkin场景的逻辑。这些步骤定义可以是JUnit测试的...
3. **报告和日志**:集成测试报告生成工具,如Cucumber-JVM的Cucumber Reports,以便于分析测试结果。 4. **持续集成/持续部署(CI/CD)**:将测试集成到CI/CD流程中,确保每次代码变更后都能自动运行测试。 5. **...
主要讲述维护项目中或者自动化项目建立中遇到的一些问题: 1.决定运行的浏览器 2.运行不起来 3.测试用例比较老,好些没更新:缺少一些场景,一些场景逻辑变了,一些场景不需要了,一些页面元素布局变了。 4.没有...
Cucumber 是一种流行的自动化测试工具,特别是在BDD(行为驱动开发)中,它允许开发者、测试人员和非技术人员使用自然语言编写可执行的规范。在Java项目中,Cucumber经常被用来验证软件功能是否按预期工作。然而,当...
此外,Cucumber还支持使用辅助工具(如Cucumber-JVM、Cuke4Duke等)将自然语言编写的测试用例自动转化为测试脚本,从而与实际的软件应用程序进行交互。这种测试脚本的自动执行,帮助团队在软件开发过程中快速发现不...
【Cucumber自动化测试官方教程】 Cucumber是一款强大的自动化测试工具,支持多种编程语言,如JAVA、JavaScript、Ruby、C++、Lua、Android、Kotlin、C#/F#、PHP、Python、Go、Groovy、Scala等。对于JAVA、JS、Ruby,...
您可以在ALM Octane中的小Cucumber测试中查看结果。 先决条件: 您正在使用Java语言和Cucumber-jvm库来开发Cucumber测试。 您正在使用JUnit运行运行CucumberJVM库作为解释 JUnit运行器使用JUnit框架运行Cucumber...
这意味着《Cucumber Recipes》将会从基础到高级,从简单的自动化测试到复杂的测试场景,为读者提供全方位的解决方案。 Dan North作为行为驱动开发的创始人和RSpec故事运行器(Cucumber的前身)的作者,在推荐语中...
Maven 搭建cucumber 简单示例 1.新建Maven 项目 2.Eclipse安装 cucumber 插件:Help->Install New Software->Add name:cucumber location:http://cucumber.github.com/cucumber-eclipse/update-site 3.导入示例项目,...
Cucumber-rust是一个针对Rust编程语言的Cucumber测试框架,它专为行为驱动开发(BDD)设计,同时也适用于测试驱动开发(TDD)和验收测试驱动开发(ATDD)。Cucumber-rust的独特之处在于它完全原生,不依赖任何外部...
总的来说,Cucumber自动化测试框架在JavaScript项目中扮演着重要角色,它通过BDD方式促进了开发团队和业务人员之间的沟通,同时提供了一种强大而直观的自动化测试解决方案。了解和掌握Cucumber的使用,对于提升软件...
4. Reporters(报告器):Cucumber运行结束时生成的报告,可以为用户提供详细的测试结果信息,包括通过的场景、失败的场景、跳过的场景等。Cucumber支持多种格式的报告,如HTML、JSON、XML等。 在实现简单的UI自动...
Cucumber 是一个自动化测试框架,尤其适用于行为驱动开发(BDD)。它允许非技术人员,如业务分析师和产品经理,使用自然语言编写测试规范,这些规范被称为特性文件。Cucumber 使用 Gherkin 语法,这是一种结构化的...
本项目"springboot-cucumber-test"结合了SpringBoot和Cucumber,提供了一种高效且易懂的测试解决方案。 首先,让我们深入了解一下SpringBoot。SpringBoot是Spring框架的一个扩展,它预配置了许多常见设置,如嵌入式...
Cucumber是一个自动化测试工具,它属于行为驱动开发(BDD)的范畴。这个工具的特点是可以用自然语言来描述测试用例,因此即使是非程序员也能轻松理解。Cucumber主要由Ruby编写,但同时也支持Java、.Net等多种开发...
- **持续集成**:Cucumber可以与持续集成服务器如Jenkins集成,实现自动化测试的运行,确保每次代码提交都能及时发现潜在问题。 - **协作开发**:Cucumber促进团队成员之间的沟通,包括开发者、测试人员和产品经理,...
主要介绍了Springboot Cucumber测试配置介绍详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧