es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, AssertJ no proporciona un método como .isPresent(boolean) para OptionalAssert. Sin embargo, puedes lograr un efecto similar mediante la encadenación de .isPresent() con .isEqualTo(expected), de la siguiente manera:

    @ParameterizedTest
    @MethodSource(/* valores */)
    void test_presence(Optional<string> opt, boolean empty) {
        if (empty) {
            assertThat(opt).isEmpty();
        } else {
            assertThat(opt).isPresent().isEqualTo(expected);
        }
    }
    

    Como alternativa, podrías utilizar una declaración if/else para verificar la presencia o falta de opt.

Comments are closed.