1. 程式人生 > >Lua Busted 輸出亂碼解決方法

Lua Busted 輸出亂碼解決方法

簡介

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 指定輸出格式可以解決亂碼問題。

參考