O que você precisa saber
sobre testes unitários
em ambiente ágil
Índice
○ TDD
○ Testes Unitários
○ Isolamento
○ Spies, Stubs e Mocks
○ BDD
○ Boas Práticas e Más práticas
Um pouco sobre agilidade
EXTREME
GO HORSE
EXTREME PROGRAMMING
TDD
Test Driven Development
Desenvolvimento orientado a testes
1. Escreva um teste que falhe
2. Escreva o código para esse teste
3. Rode os testes
4. Refatore o código
5. Volte ao 1
Automatizados
Behaviour Driven Development
BDD
TDD
suite('Contador', () => {
test('tick aumenta contador em 1', () => {
let counter = new Counter();
counter.tick();
assert.equal(counter.count, 1);
});
});
BDD
describe('Contador', () => {
it('aumenta o contador em 1 após o tick', () => {
const counter = new Counter();
const count = counter.count;
const expectedCount = count + 1;
counter.tick();
expect(counter.count).to.be.equal(expectedCount);
});
});
Testes unitários e isolamento
E outras ferramentas
Unit Test
Testes unitários
Isolamento
Testes unitários
Spies, stubs e mocks
Testes unitários
Más práticas e Boas Práticas
Boas Práticas
Testes unitários
Organize, atue, e cheque
Boas Práticas
Isso contribui para códigos determinísticos, evitar uma leitura difícil
dos testes unitários e evitar a escrita de testes unitários
desnecessários.
describe, it
Refatore
describe('Contador', () => {
it('aumenta o contador em 1 após o tick', () => {
const counter = new Counter();
let expectedCount = 1;
counter.tick();
expect(counter.count).to.be.equal(expectedCount);
expectedCount = 2;
counter.tick();
expect(counter.count).to.be.equal(expectedCount);
});
});
Organize, atue, e cheque
Boas Práticas
Descreva a unidade e o it o que está sendo testado.
describe, it
Refatore
Organize, atue, e cheque
Boas Práticas
SEMPRE!
describe, it
Refatore
Más Práticas
Testes unitários
Teste Integrado
Falta de clareza
Más Práticas
Dependência de execução
describe('teste', () => {
it('testa functionName',() => {
});
});
Lógica
Code Review
Teste Integrado
Falta de clareza
Más Práticas
Dependência de execução
Deixa eu testar aquele acesso ao banco
de dados…
Ou esse teste da camada de view com
com o meu serviçoLógica
Code Review
Teste Integrado
Falta de clareza
Más Práticas
Dependência de execução Primeiro deixa testar se somou 1 agora
pego o resultado e vejo se soma com 2...
Lógica
Code Review
Teste Integrado
Falta de clareza
Más Práticas
Dependência de execução É só os arquivos de testes, não preciso
me preocupar
Lógica
Code Review
Teste Integrado
Falta de clareza
Más Práticas
Dependência de execução
items.forEach(item => it(`testa ${item}, () =>
{
const result = item;
expect(result).to.be.equal(true);
}));
Lógica
Code Review
Dúvidas
Quer fazer parte do nosso time de times?
Temos vagas!
NÓS MOVEMOS O MUNDO.
Centro
Av. Presidente Wilson, 231 
29º andar
(21) 2240-2030
Cidade Monções
Av. Nações Unidas, 11.541 
3º andar
(11) 4119-0449
Savassi
Av. Getúlio Vargas, 671 
Sala 800 - 8º andar
(31) 3360-8900
Ilha do Leite
Rua Sen. José Henrique, 199
2º andar
(81) 3018-6299
WWW.CONCRETE.COM.BR

O que você precisa saber sobre testes unitários