Intentando usar Junit para verificar que la salida de la consola coincida con una cadena

Estoy tratando de usar Junit para verificar que algo generado por un método coincida con una cadena usando assertequals, pero no puedo hacer que funcione. Porque dice que el caso de prueba no está definido para (String, Void) Mi código para el método está debajo

public void speciesInformation() {
     switch (species){ 

     case"Penguin":System.out.println("Penguin Trivia fact");
     break;

     default: System.out.println("There is no current information for that species");
     break;
     }       
}

y el código junit que intento usar es (se omiten otras pruebas):

public class AnimalsTest extends junit.framework.TestCase{
public void testSpeciesInfo() {   
    assertEquals(" Penguin Trivia fact/n", penguin.speciesInformation());
}
}

Todas mis otras pruebas funcionan porque se basan en un retorno, pero se supone que esta se basa en lo que está impreso por el método de anulación pública y no puedo decir cómo hacerlo o encontrar información sobre cómo hacerlo.

Respuesta 1

Se puede utilizar ByteArrayOutputStreampara esto, establecer new PrintStreamde byteArrayOutputStreamen System.setOut, entonces se puede afirmar lo que se registra en la consola fácilmente.

Ver esto por ejemplo

Respuesta: 2

Tengo una aplicación Java que se ejecuta en WAS 6.1, con Log4j utilizado para iniciar sesión. Los archivos de registro no se crean. Se utiliza alguna otra configuración para el registro, pero no la que se empaqueta con ...

Antecedentes: tenemos una nube de solr de 3 nodos que se migró a Docker. Funciona como se esperaba, sin embargo, para los nuevos datos que se insertan, solo se puede recuperar por id. Una vez que intentamos usar filtros, no ...

Estoy tratando de escribir un poco de código que permita al usuario completar campos de texto haciendo clic en celdas booleanas en una JTable. Puedo hacer que el programa ingrese los datos de la tabla en un campo de texto pero ...

Aquí está mi código. Traté de convertir el binario en una matriz de caracteres, luego multipliqué cada carácter en la matriz por 2 a la potencia de su número correspondiente en la matriz, luego resumí todos los valores de los caracteres ...