Lua:
Escrevendo testes

Como fazer:

Lua, sendo uma linguagem de script leve, porém poderosa, não inclui um framework de teste integrado. No entanto, bibliotecas de terceiros como Busted e LuaUnit tornam o teste relativamente direto. Aqui, vamos olhar para exemplos usando ambos.

Usando Busted

Busted é um framework de teste Lua popular que oferece uma maneira flexível de escrever testes. Primeiramente, instale o Busted através do LuaRocks (gerenciador de pacotes do Lua) com luarocks install busted. Uma vez instalado, você pode escrever seus testes. Aqui está um teste simples para uma função add que soma dois números:

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

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

describe("Função de adição", function()
  it("deve adicionar dois números corretamente", function()
    assert.are.equal(5, add(2, 3))
  end)
end)

Para executar os testes, execute busted no seu terminal. A saída de exemplo para um teste que passou deveria ser assim:

●
1 sucesso / 0 falhas / 0 erros / 0 pendentes : 0,002 segundos

Usando LuaUnit

LuaUnit é outro framework de teste que segue as convenções xUnit e é fácil de configurar. Instale o LuaUnit via LuaRocks usando luarocks install luaunit. Aqui está como você poderia escrever um teste semelhante ao de cima com LuaUnit:

-- add.lua continua o mesmo

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

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

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

Executando este script diretamente via Lua (lua test_add.lua) produzirá algo como:

.
Executou 1 teste em 0.001 segundos, 1 sucesso, 0 falhas

Tanto Busted quanto LuaUnit oferecem recursos extensivos para lidar com vários cenários de teste, incluindo mock, espionagem e teste assíncrono. A escolha entre eles reside nas necessidades específicas do seu projeto e na sua preferência pessoal em relação à sintaxe e funcionalidade.