Tengo pruebas similiar al único valor / afirmación de entrada difieren:
@Test
void test1() {
// Given:
val request = Request
.builder()
.totalAmount(new BigDecimal("160000"))
.termInYears(20)
.familySize(2)
.incomeAmount(new BigDecimal("4000"))
.costOfLiving(BigDecimal.ZERO)
.build();
// When:
Result result =
facade.getLoanAmount(request);
// Then:
result.getSimulations().forEach(simulation -> {
if(simulation.getVariantCode().equals(Variant.A)) {
assertThat(simulation.getInstallmentAmount().compareTo(new BigDecimal("720")) == 0);
assertThat(simulation.getInterestRate().compareTo(new BigDecimal("0.0321")) == 0);
assertThat(simulation.getLoanAmount().compareTo(new BigDecimal("127390")) == 0);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
} if(simulation.getVariantCode().equals(Variant.B)) {
assertThat(simulation.getInstallmentAmount().compareTo(new BigDecimal("720")) == 0);
assertThat(simulation.getInterestRate().compareTo(new BigDecimal("0.0321")) == 0);
assertThat(simulation.getLoanAmount().compareTo(new BigDecimal("127390")) == 0);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
} if(simulation.getVariantCode().equals(Variant.C)) {
assertThat(simulation.getInstallmentAmount().compareTo(new BigDecimal("720")) == 0);
assertThat(simulation.getInterestRate().compareTo(new BigDecimal("0.0321")) == 0);
assertThat(simulation.getLoanAmount().compareTo(new BigDecimal("127390")) == 0);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
}
});
}
@Test
void test2() {
// Given:
val request = Request
.builder()
.totalAmount(new BigDecimal("200000"))
.termInYears(20)
.familySize(2)
.incomeAmount(new BigDecimal("4000"))
.costOfLiving(BigDecimal.ZERO)
.build();
// When:
Result result =
facade.getLoanAmount(request);
// Then:
result.getSimulations().forEach(simulation -> {
if(simulation.getVariantCode().equals(Variant.A)) {
assertThat(simulation.getInstallmentAmount().compareTo(new BigDecimal("720")) == 0);
assertThat(simulation.getInterestRate().compareTo(new BigDecimal("0.0321")) == 0);
assertThat(simulation.getLoanAmount().compareTo(new BigDecimal("127390")) == 0);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
} if(simulation.getVariantCode().equals(Variant.B)) {
assertThat(simulation.getInstallmentAmount().compareTo(new BigDecimal("720")) == 0);
assertThat(simulation.getInterestRate().compareTo(new BigDecimal("0.0321")) == 0);
assertThat(simulation.getLoanAmount().compareTo(new BigDecimal("127390")) == 0);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
} if(simulation.getVariantCode().equals(Variant.C)) {
assertThat(simulation.getInstallmentAmount() == null);
assertThat(simulation.getInterestRate() == null);
assertThat(simulation.getLoanAmount()== null);
assertThat(simulation.getNumberOfInstallmentsInMonths() == 240);
}
});
}
Este código funciona bien, pero me pregunto cómo escribir el código nicier. Yo sé que hay @ParameterizedTest
pero no estoy seguro de que esto reducirá línea de código en este escenario y cómo proporcionar entrada / salida allí? Cuál sería el mejor enfoque? Tengo que escribir muchos más de pruebas como la que entonces pienso que proporciona entrada / salida para muchas pruebas sería bueno. En Spock sería una buena mesa, pero tengo que utilizar otra herramienta.
Si está utilizando JUnit 5 (ParameterizedTests en 4 son muy diferentes, sino que también hacen que sea posible), algo como esto debería funcionar:
@ParameterizedTest
@MethodSource("arguments")
void test(Request input, BigDecimal result) {
// ...
}
public static Stream<Arguments> arguments() {
r1 = Request.builder().build(); // add request configuration here
r2 = Request.builder().build(); // ... and here
return Stream.of(
Arguments.of(r1, new BigDecimal("720")),
Arguments.of(r2, null)
);
}
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras