Lua Busted 輸出亂碼解決方法
阿新 • • 發佈:2018-11-02
簡介
Lua Busted 單元測試框架在筆者電腦上預設輸出是有亂碼的,因為預設輸出格式是 utfTerminal
,有一些特殊字元在普通的 Windows 命令列工具中不能顯示。但是它支援多種輸出模式,通過指定輸出型別可以解決這一問題。
解決方法
預設輸出
使用命令:busted
(與 busted -o utfTerminal
等效)
輸出:
鈼忊椉鉁 1 success / 1 failure / 1 error / 0 pending : 0.015 seconds Failure 鈫?spec\sample_spec.lua @ 7 basic test should throw error if assert false spec\sample_spec.lua:8: Expected to be falsy, but value was: (string) 'yup' Error 鈫?spec\sample_spec.lua @ 10 basic test should load module .\Logic/Utility.lua:328: attempt to index a nil value (global 'UnityEngine')
這是預設的輸出形式,因為 windows 命令列不支援而出現亂碼。
普通輸出
使用命令:busted -o plainTerminal
輸出:
+-* 1 success / 1 failure / 1 error / 0 pending : 0.0 seconds Failure -> spec\sample_spec.lua @ 7 basic test should throw error if assert false spec\sample_spec.lua:8: Expected to be falsy, but value was: (string) 'yup' Error -> spec\sample_spec.lua @ 10 basic test should load module .\Logic/Utility.lua:328: attempt to index a nil value (global 'UnityEngine')
此時已經沒有亂碼。
TAP 風格輸出
這一風格適合 CI。
使用命令:busted -o TAP
輸出:
ok 1 - basic test should pass not ok 2 - basic test should throw error if assert false # spec\sample_spec.lua @ 7 # Failure message: spec\sample_spec.lua:8: Expected to be falsy, but value was: # (string) 'yup' @C:\local\LuaRocks-3.0.2\systree/share/lua/5.3/busted\outputHandlers\TAP.lua(33,1) not ok 3 - basic test should load module @C:\local\LuaRocks-3.0.2\systree/share/lua/5.3/busted\outputHandlers\TAP.lua(34,1) # spec\sample_spec.lua @ 10 @C:\local\LuaRocks-3.0.2\systree/share/lua/5.3/busted\outputHandlers\TAP.lua(36,1) # Failure message: .\Logic/Utility.lua:328: attempt to index a nil value (global 'UnityEngine') 1..3
總結
在 Windows 下命令列使用 busted 指定輸出格式可以解決亂碼問題。