Considere a entidade Factura com o seguinte comportamento:
Podem ser adicionados e removidos items a uma Factura aberta através dos métodos add e remove.
Uma Factura aberta pode ser fechada (via método close) e após este momento já não podem ser alterados os items associados à Factura.
Uma Factura fechada pode ser cancelada (via método cancel) enquanto não for paga (via método pay).
Em qualquer situação é possível saber o valor total dos items associados à Factura (via método getCost).
- Quando é criada uma Factura considere que ela está aberta.
Aplicando o padrão de testes mais apropriado, e descrevendo os vários passos da sua aplicação, desenhe os casos de teste que permitem verificar o comportamento desta classe.