Aniche Mauricio - Test-Driven Development: Teste e Design no Mundo Real com .NET стр 3.

Шрифт
Фон

Qualidade no Código do Teste

61

6.1

Repetição de código entre testes . . . . . . . . . . . . . . . . . . . . . .

62

6.2

Nomenclatura dos testes . . . . . . . . . . . . . . . . . . . . . . . . . .

65

6.3

Test Data Builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

6.4

Testes Repetidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6.5

Escrevendo boas asserções . . . . . . . . . . . . . . . . . . . . . . . . .

72

6.6

Testando listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

6.7

Separando as Classes de Teste . . . . . . . . . . . . . . . . . . . . . . .

75

6.8

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

7

TDD e a Coesão

77

7.1

Novamente o Problema do Cálculo de Salário . . . . . . . . . . . . . .

77

7.2

Ouvindo o feedback dos testes . . . . . . . . . . . . . . . . . . . . . . .

82

7.3

Testes em métodos privados? . . . . . . . . . . . . . . . . . . . . . . . .

84

7.4

Resolvendo o Problema da Calculadora de Salário . . . . . . . . . . .

85

7.5

O que olhar no teste em relação a coesão? . . . . . . . . . . . . . . . . 89

7.6

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

8

TDD e o Acoplamento

91

8.1

O Problema da Nota Fiscal . . . . . . . . . . . . . . . . . . . . . . . . .

91

8.2

Mock Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

8.3

Dependências explícitas . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8.4

Ouvindo o feedback dos testes . . . . . . . . . . . . . . . . . . . . . . . 99

8.5

Classes estáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

viii

Casa do Código

Sumário

8.6

Resolvendo o Problema da Nota Fiscal . . . . . . . . . . . . . . . . . . 103

8.7

Testando métodos estáticos . . . . . . . . . . . . . . . . . . . . . . . . . 105

8.8

TDD e a constante criação de interfaces . . . . . . . . . . . . . . . . . 107

8.9

O que olhar no teste em relação ao acoplamento? . . . . . . . . . . . . 110

8.10 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

9

TDD e o Encapsulamento

113

9.1

O Problema do Processador de Boleto . . . . . . . . . . . . . . . . . . 113

9.2

Ouvindo o feedback dos testes

. . . . . . . . . . . . . . . . . . . . . . . 118

9.3

Tell, Dont Ask e Lei de Demeter . . . . . . . . . . . . . . . . . . . . . . 119

9.4

Resolvendo o Problema do Processador de Boletos . . . . . . . . . . . 120

9.5

O que olhar no teste em relação ao encapsulamento? . . . . . . . . . . 121

9.6

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

10 Testes de Integração e TDD

123

10.1

Testes de unidade, integração e sistema . . . . . . . . . . . . . . . . . . 123

10.2 Quando não usar mocks? . . . . . . . . . . . . . . . . . . . . . . . . . . 125

10.3 Testes em DAOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

10.4 Devo usar TDD em testes de integração? . . . . . . . . . . . . . . . . . 132

10.5 Testes em aplicações Web . . . . . . . . . . . . . . . . . . . . . . . . . . 132

10.6 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

11 Quando não usar TDD?

137

11.1

Quando não praticar TDD?

. . . . . . . . . . . . . . . . . . . . . . . . 137

11.2

100% de cobertura de código? . . . . . . . . . . . . . . . . . . . . . . . 138

11.3

Devo testar códigos simples? . . . . . . . . . . . . . . . . . . . . . . . . 140

11.4

Erros comuns durante a prática de TDD . . . . . . . . . . . . . . . . . 141

11.5

Como convencer seu chefe sobre TDD?

. . . . . . . . . . . . . . . . . 141

11.6

TDD em Sistemas Legados . . . . . . . . . . . . . . . . . . . . . . . . . 144

11.7

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

12 E agora?

147

12.1

O que ler agora? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

12.2

Dificuldade no aprendizado . . . . . . . . . . . . . . . . . . . . . . . . 148

12.3

Como interagir com outros praticantes? . . . . . . . . . . . . . . . . . 149

12.4 Conclusão Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

ix

Sumário

Casa do Código

13 Apêndice: Princípios SOLID

151

13.1

Sintomas de Projetos de Classes em Degradação . . . . . . . . . . . . 151

13.2

Princípios de Projeto de Classes . . . . . . . . . . . . . . . . . . . . . . 154

13.3

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Índice Remissivo

158

Bibliografia

161

x

Capítulo 1

Introdução

Será que testar software é realmente importante? Neste capítulo, discutimos um

pouco sobre as consequências de software não testado e uma possível solução para

isso, que hoje é um problema para a sociedade como um todo, já que softwares estão

em todos os lugares.

1.1

Era uma vez um projeto sem testes...

Durante os anos de 2005 e 2006, trabalhei em um projeto cujo objetivo era automa-

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке