Gostaria de saber se tem a possibilidade de refatorar o teste para que os cenários não possuam códigos repetitivos. EX: seria possível fazer todos os acertes no primeiro caso de teste e mudar o nome para confirmar pagamento em dia útil?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Gostaria de saber se tem a possibilidade de refatorar o teste para que os cenários não possuam códigos repetitivos. EX: seria possível fazer todos os acertes no primeiro caso de teste e mudar o nome para confirmar pagamento em dia útil?
Olá Edilberto,
Obrigada por compartilhar sua dúvida conosco. Sim, é possível refatorar o teste para evitar a repetição de código. Uma opção seria utilizar a anotação @Before para criar um objeto Payment e configurá-lo com os valores necessários para cada cenário de teste. Dessa forma, você pode criar apenas um objeto e reutilizá-lo em todos os testes.
Por exemplo:
@Before
public void setUp() {
Payment payment = new Payment();
payment.setAmount(100.0);
payment.setDate(LocalDate.of(2021, 9, 10));
payment.setPaymentMethod(PaymentMethod.CREDIT_CARD);
payment.setPaymentStatus(PaymentStatus.PENDING);
this.payment = payment;
}
Além disso, para evitar a repetição de código nos testes, você pode criar um método auxiliar para verificar se o pagamento foi processado corretamente. Dessa forma, você pode chamar esse método em todos os testes que precisam verificar o processamento do pagamento.
Por exemplo:
private void assertPaymentProcessedSuccessfully(Payment payment) {
assertEquals(PaymentStatus.PROCESSED, payment.getPaymentStatus());
assertNotNull(payment.getConfirmationCode());
assertTrue(payment.getConfirmationCode().startsWith("CONF"));
}
Espero que essas sugestões ajudem a refatorar seu teste e torná-lo mais eficiente. Qualquer dúvida, estamos à disposição.
Espero ter ajudado e bons estudos!
Obrigado pela ajuda Matheus.