View
41
Download
2
Category
Preview:
Citation preview
Testes Unitários!
Testes que verificam o código escrito
Testes unitários!
O que são ?
Testes unitários!
O que são ? Testes que verificam uma parte específica do código, geralmente funções, em um ambiente orientado a objetos são testados os comportamento das classes. O objetivo do teste unitário é assegurar que cada unidade está funcionando de acordo como deveria.
Os teste unitários, quando bem escritos, servem como uma forma de documentação das funcionalidades do sistema.
Testes unitários!
Definindo a classe alvo - Game
class Game ## Define o get e o setter ao atributo "players" attr_accessor :players !
## Construtor def initialize(players = [‘Terrorista’]) @players = players end end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true else return false end end end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true ## Se é 1 returna true, passou no teste else return false ## Se não retorna false, falhou no teste end end end
Testes unitários!
Definindo a classe teste - TestGame
require_relative ‘Game' class TestGame ## Testa se o número de players é 1 quando iniciada a classe def test_have_1_player_on_create @game = Game.new if @game.players.size == 1 return true else return false end end end
Cria objeto Game
Verifica se o atributo players tem tamanho 1
Se sim retorna true Se não retorna false
Testes unitários!
Testando## Instancia da classe TestGame @test = TestGame.new !
## Executa o método "test_have_1_player_on_create" @test.test_have_1_player_on_create() ## retorna true, passou no teste !
## Porque ? !
def initialize(players = [‘Terrorista’]) ## players tem 1 elemento, o 'Terrorista' @players = players end
Testes unitários!
Alterando o construtor e executando novamente:
## Altera o construtor para iniciar com o Array players vazio def initialize(players = []) @players = players end !
## Rodamos o teste novamente: @test = TestGame.new @test.test_have_1_player_on_create() ## => false, não passou no teste
Testes unitários!
ResumoCriamos a classe Game que inicializa com 1 player,o Terrorista, então escrevemos o teste para nos assegurar disso.
Testes unitários!
TDD (Desenvolvimento orientado a testes)
O TDD é uma metodologia de desenvolvimento em que primeiro são escritos os testes unitários(de classes), e depois é escrito o código em si, as classes e suas funções.
A principal vantagem do TDD é que ele facilita o rastreamento do erro caso uma mudança ocasione um problema.
No exemplo codificamos nessa ordem:
Game.rbTestGame.rb
No TDD:
Game.rbTestGame.rb
Testes unitários!
Exemplo em C#, métodos soma e multiplicação
Testes unitários!
namespace calculadora
{
public class Calculadora
{
int soma(int i, int j)
{
return i + j;
}
int multiplicacao(int i, int j)
{
return i * j;
}
}
}
Teste da função de multiplicação:
Testes unitários!
public void multiplicacaoTest()
{
Calculadora_Accessor target = new Calculadora_Accessor();
int i = 50;
int j = 2;
int expected = 100;
int actual;
actual = target.divisao(i, j);
Assert.AreEqual(expected, actual);
}
Teste da função de soma
Testes unitários!
public void somaTest()
{
Calculadora_Accessor target = new Calculadora_Accessor();
int i = 50;
int j = 2;
int expected = 52;
int actual;
actual = target.divisao(i, j);
Assert.AreEqual(expected, actual);
}
O 3 passos dos testes unitários!!
1 - Criar a classe alvo e seus métodos !
2 - Criar a classe teste e o teste de todos os métodos da classe alvo !
3 - Executar os testes e checar se todos estão funcionando corretamente, isto é, retornando verdadeiro.
!
OBS: No TDD primeiro os passos 2 e 1 são invertidos
Testes unitários!
Recommended