新手问题 关于 minitest 框架断言中文后,输出为 Unicode 字符。怎么样才能正常输出中文。

s101070791 · 2016年05月31日 · 最后由 s101070791 回复于 2016年05月31日 · 2639 次阅读

最近在研究 minitest 框架。发现断言中包含中文时,输出为 unicode 字符。

使用 test-unit 框架可以正常断言中文。 对比了 2 个框架的 assert_equal 实现: test-unit:直接输出 exp minitest: exp.inspect

我再测试一把: test="登录失败" puts test.encoding # => utf-8 puts test.inspect # => "\u767B\U5F55\U5931\U8D25" puts test.inspect.encoding # => GBK puts test # => 登录失败

发现确实是 中文字符调用 inspect 方法引起的。 请教各位,可以使用什么方法让“中文”.inspect 输出为 中文。

不是因为一个是 2 个 !,一个是 1 个 ! 吗?

#1 楼 @shallmentmo 此处断言是我故意让他失败的,为了看到断言的输出。

现在主要问题是怎么样让 Expected: 和 Actual: 正常显示为中文。

Test fail:预期为{用户 adminAccount 不存在!!},实际为{用户 adminAccount 不存在!}. Expected: "\u7528\u6237adminAccount\u4E0D\u5B58\u5728\uFF01\uFF01" Actual: "\u7528\u6237adminAccount\u4E0D\u5B58\u5728\uFF01"

@s101070791 我试了,“中文”.inspect 的输出是中文的,你的是 windows ?

#3 楼 @shallmentmo 楼主用的是 Windows。编辑器用的貌似是 EditPlus。不过在 Mac 系统下测试,输出为中文。

#3 楼 @shallmentmo 对。win7 + ruby2.0 + scite。 经过你的提醒我发现在 irb 下是可以正常输出中文的。需要保证编码为 gbk 所以我有测试了一下,在文件头加上 #encoding=gbk,即可正常显示中文,如下图 2 但是。 #encoding=gbk 加入到 minitest 框架文件时就报错了。如图 3

@s101070791 我有个疑问,为什么不是用 encoding=utf-8

#6 楼 @shallmentmo 文件默认编码就是 utf-8。如图 这就回到问题的起点了。使用 utf-8,minitest 的断言中文输出为 unicode 字符。

@s101070791 会是因为 Ruby 2.0 的原因吗,能升级 Ruby 版本试试? minitest 的确是用 inspect 的。会不会是 Ruby 环境的问题?

#8 楼 @shallmentmo 十分感谢 shallmentmo 大哥的耐心答复。 按照要求,将 ruby 版本升级到 2.2.3 问题解决。如下图:

需要 登录 后方可回复, 如果你还没有账号请 注册新账号