Lua:
Pisanie testów

Jak to zrobić:

Lua, będąc lekkim, lecz potężnym językiem skryptowym, nie zawiera wbudowanego frameworka do testowania. Jednakże biblioteki stron trzecich, takie jak Busted i LuaUnit, sprawiają, że testowanie jest stosunkowo proste. Tutaj przyjrzymy się przykładom z użyciem obu.

Korzystanie z Busted

Busted to popularny framework do testowania Lua, który oferuje elastyczny sposób na pisanie testów. Po pierwsze, zainstaluj Busted przez LuaRocks (menedżer pakietów Lua) z luarocks install busted. Po instalacji możesz pisać swoje testy. Oto prosty test dla funkcji add, która sumuje dwie liczby:

-- add.lua
local function add(a, b)
  return a + b
end

return add
-- add_spec.lua
local add = require('add')

describe("Funkcja dodawania", function()
  it("powinna prawidłowo dodawać dwie liczby", function()
    assert.are.equal(5, add(2, 3))
  end)
end)

Aby uruchomić testy, wykonaj busted w terminalu. Przykładowe wyjście dla udanego testu wyglądałoby tak:

●
1 sukces / 0 porażek / 0 błędów / 0 oczekujących : 0.002 sekundy

Korzystanie z LuaUnit

LuaUnit to kolejny framework do testowania, który podąża za konwencjami xUnit i jest łatwy w konfiguracji. Zainstaluj LuaUnit przez LuaRocks używając luarocks install luaunit. Oto jak można napisać podobny test jak wyżej z LuaUnit:

-- add.lua pozostaje bez zmian

-- test_add.lua
luaunit = require('luaunit')
local add = require('add')

function testAdd()
  luaunit.assertEquals(add(2, 3), 5)
end

os.exit(luaunit.LuaUnit.run())

Uruchomienie tego skryptu bezpośrednio za pomocą Lua (lua test_add.lua) wyświetli coś takiego:

.
Uruchomiono 1 test w 0.001 sekundy, 1 sukces, 0 porażek

Zarówno Busted, jak i LuaUnit oferują obszerne funkcje do radzenia sobie z różnymi scenariuszami testowymi, w tym mokowanie, szpiegowanie i testowanie asynchroniczne. Wybór między nimi zależy od konkretnych potrzeb projektu i osobistych preferencji dotyczących składni i funkcjonalności.