Lua Busted 單元測試簡介(Windows 環境)
阿新 • • 發佈:2018-11-02
簡介
本文目標是在 Windows 環境下使用 Busted 進行 Lua 單元測試。
Busted 是一款 BDD 風格的 Lua 單元測試框架,支援 TAP 風格輸出。
環境
- Lua 5.3.5
- LuaRocks 3.0.2
- Microsoft Windows 10 企業版 10.0.14393 版本 14393
環境配置
- 安裝 LuaRocks,參照 Windows 平臺 Luarocks 3.0.2 編譯安裝
luarocks install busted
等待安裝完成即可。- 可能需要修改一下 busted.bat 檔案以使 busted 可以找到測試檔案同目錄下的模組。參見
使用方法
busted 執行提供的 lua 指令碼中的測試並給出測試結果。測試風格是 describe-it
式的,可以當做句子來讀。具體語法請檢視官方說明。
示例
待測試模組,儲存為 sample_module.lua
:
-- sample_module.lua
local sample_module = {}
function sample_module.greet( ... )
print("hello")
end
return sample_module
測試程式碼,儲存為 busted-simple.lua
-- busted-simple.lua describe("Busted unit testing framework", function() describe("should be awesome", function() it("should be easy to use", function() print(package.path) assert.truthy("Yup.") end) it("should have lots of features", function() -- deep check comparisons! assert.are.same({ table = "great"}, { table = "great" }) -- or check by reference! assert.are_not.equal({ table = "great"}, { table = "great"}) assert.truthy("this is a string") -- truthy: not false or nil assert.True(1 == 1) assert.is_true(1 == 1) assert.falsy(nil) assert.has_error(function() error("Wat") end, "Wat") end) it("should provide some shortcuts to common functions", function() assert.are.unique({{ thing = 1 }, { thing = 2 }, { thing = 3 }}) end) it("should have mocks and spies for functional tests", function() local thing = require("sample_module") spy.on(thing, "greet") thing.greet("Hi!") assert.spy(thing.greet).was.called() assert.spy(thing.greet).was.called_with("Hi!") end) end) end)
使用命令列在上述檔案所在目錄執行命令 busted busted-simple.lua
,得到結果:
./src/?.lua;./src/?/?.lua;./src/?/init.lua;.\?.lua;C:\local\LuaRocks-3.0.2\systree/share/lua/5.3/?.lua;C:\local\LuaRocks-3.0.2\systree/share/lua/5.3/?/init.lua;%LUA_PATH%
鈼忊棌鈼廻ello
鈼
4 successes / 0 failures / 0 errors / 0 pending : 0.016 seconds
可以看到四個測試都通過了。(亂碼先忽略吧,應該是官方沒有做好 utf-8 輸出處理,但是核心測試功能是 ok 的)。