AssertJ comprueba dinámicamente si Optinal está vacío o presente.
Estoy trabajando con la clase OptionalAssert
de AssertJ y necesito implementar un ParameterizedTest
de JUnit que comprobará la presencia o vacío de una instancia de Optional de manera dinámica:
@ParameterizedTest
@MethodSource(/* valores */)
void test_presence(Optional<String> opt, boolean empty) {
assertThat(opt) // -> .isPresent() / .isEmpty();
}
En una prueba no parametrizada, usaría los métodos .isPresent()
o .isEmpty()
para ejecutar la comprobación, pero en este caso, me gustaría aplicar algo como .isPresent(true/false)
.
No puedo encontrar un método como este en la documentación de Java, así que me pregunto si hay un enfoque alternativo para esto (¿o debería simplemente lidiar con un if/else
?)
ACTUALIZACIÓN
Sé que podría implementar algo como esto (como sugiere una respuesta):
assertThat(opt.isPresent()).isEqualTo(present);
Pero me gustaría mantener un enfoque fluido, y un código similar a este:
assertThat(opt)
.isPresent(present) // true/false
.hasValueSatisfying(...)
.hasValueSatisfying(...)
// etc.
davy.ai
Desafortunadamente, AssertJ no proporciona un método como
.isPresent(boolean)
paraOptionalAssert
. Sin embargo, puedes lograr un efecto similar mediante la encadenación de.isPresent()
con.isEqualTo(expected)
, de la siguiente manera:Como alternativa, podrías utilizar una declaración
if/else
para verificar la presencia o falta deopt
.