O que são testes unitários?
São testes desenvolvidos para validarem "unidades" dentro do seu software, essas unidades podem ser métodos, classes, módulos etc... Essa validação é feita com a comparação da saída de alguma função com o resultado esperado. Ao final da execução um relatório é mostrado contendo informações sobre o processo (número de testes, sucessos e falhas por exemplo). Frameworks de testes unitários possibilitam a realização desses testes de maneira mais simples, rápida e com mais transparência.
O que precisa ser testado?
Não pense que é só sair testando todo código que aparece pela frente que vai ficar tudo bem no final. Pelo contrário, isso só vai te atrasar. No geral, funções com retorno e efeitos colaterais devem ser testados para garantir a integridade da aplicação.
Como realizar esses testes?
Assumindo que esse é seu primeiro contato com testes unitários, o melhor meio (por simplicidade) para fazer isso é o Test::Unit. É um módulo em Ruby e possui todas as funcionalidades básicas que um framework com esse fim deve ter.
Primeiramente temos nossa classe que será testada (nota-se que essa classe está sendo usada apenas como exemplo já que seus métodos são muitos simples e o resultado é óbvio). É uma lista de amigos e nela temos algumas funções, sendo: add para adicionar amigos, remove para remover e clear para limpar.
Os testes para essa classe ficariam da seguinte forma:
Créditos:
Paulo Soreto
São testes desenvolvidos para validarem "unidades" dentro do seu software, essas unidades podem ser métodos, classes, módulos etc... Essa validação é feita com a comparação da saída de alguma função com o resultado esperado. Ao final da execução um relatório é mostrado contendo informações sobre o processo (número de testes, sucessos e falhas por exemplo). Frameworks de testes unitários possibilitam a realização desses testes de maneira mais simples, rápida e com mais transparência.
O que precisa ser testado?
Não pense que é só sair testando todo código que aparece pela frente que vai ficar tudo bem no final. Pelo contrário, isso só vai te atrasar. No geral, funções com retorno e efeitos colaterais devem ser testados para garantir a integridade da aplicação.
Como realizar esses testes?
Assumindo que esse é seu primeiro contato com testes unitários, o melhor meio (por simplicidade) para fazer isso é o Test::Unit. É um módulo em Ruby e possui todas as funcionalidades básicas que um framework com esse fim deve ter.
Primeiramente temos nossa classe que será testada (nota-se que essa classe está sendo usada apenas como exemplo já que seus métodos são muitos simples e o resultado é óbvio). É uma lista de amigos e nela temos algumas funções, sendo: add para adicionar amigos, remove para remover e clear para limpar.
- Código:
# File: friend_list.rb
class FriendList
def initialize
@friends = []
end
def add(name)
@friends << name
name
end
def remove(name)
@friends.delete(name)
name
end
def clear
@friends.clear
@friends
end
end
Os testes para essa classe ficariam da seguinte forma:
- Código:
# File: friend_list_tests.rb
require 'friend_list'
require 'test/unit'
class TestFriendList < Test::Unit::TestCase
def test_return
list = FriendList.new
assert_equal('Paulo Soreto', list.add('Paulo Soreto'))
assert_equal('Pedro Josefino', list.add('Pedro Josefino'))
assert_equal([], list.clear)
end
def test_methods
list = FriendList.new
list.add('Paulo Soreto')
assert_equal(['Paulo Soreto'], list)
list.add('Pedro Josefino')
assert_equal(['Paulo Soreto', 'Pedro Josefino'], list)
list.remove('Paulo Soreto')
assert_equal(['Pedro Josefino'], list)
list.clear
assert_equal([], list)
end
end
Créditos:
Paulo Soreto