Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Execução de testes: driver e stub
2
Driver e Stub main Driver X SUT S1 S2 Stubs
3
Driver Operação que exercita o módulo sob teste Exemplo:
Envia valores, coleta e compara resultados Exemplo: JUnit test cases 3
4
Exemplo: Driver public class TestDriver extends TestCase { …
public static void testDeposito(){ BankAccount sut = new BankAccount(100); sut.remove(60); Assert.assertEquals(sut.saldo(), 40); } 4
5
Stub Cenário: Stub: Substituto de B para testar A A e B são unidades
A depende de B B não pode ser usado Stub: Substituto de B para testar A 5
6
Por que usar stubs? O componente real (B) não está pronto
Usar componente real não é prático para o teste. Exemplos: Requer conexão de rede É ineficiente
7
Custo de Stubs Pode ser trabalhoso implementar manualmente
Stub e Stubbed devem respeitar mesma interface Pode deixar o código menos legível
8
Exemplo: Stub public static int testPath(int x){ y = foo(x);
if (x > y) return x – y else if (x < y) return x + y; else x/y; } public static int foo(int x) { // assuma que implementacão real // nao está pronta ou é inviável // de usar para o teste
9
Observe que o sistema não está preparado para receber um stub!
10
Passo 1: preparação da interface
public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);}
11
Passo 2: instanciação da interface
public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);} … public static void test1() { int x = 1; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return x + 1; }; testPath(x, foo1);
12
Passo 2: instanciação da interface
public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);} … public static void test2() { int x = 1; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return x - 1; }; testPath(x, foo1);
13
Passo 2: instanciação da interface
public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else x/y; } static interface CmdFoo {public int foo(int x);} … public static void test3() { int x = 0; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return 0; }; testPath(x, foo1); BANG!!!
14
Existem ferramentas para apoiar a construção de stubs. E.g., jmock.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.