¿Cómo probar el método de vacío con las herramientas de prueba de Junit?

Acabo de implementar un método void followlink(obj page,obj link) que simplemente agrega páginas y enlaces a la cola. Intenté sin éxito probar este tipo de método.

Todo lo que quiero es probar que en la cola contiene la página y el enlace recibidos del método de seguimiento. Mi clase de prueba ya extiende TestCase. Entonces, ¿cuál es la mejor manera de probar tal método?

    Las preguntas frecuentes de JUnit tienen una sección sobre métodos de prueba que devuelven el void . En su caso, desea probar un efecto secundario del método llamado.

    El ejemplo dado en las preguntas frecuentes prueba que el tamaño de una Collection cambia después de agregar un elemento.

     @Test public void testCollectionAdd() { Collection collection = new ArrayList(); assertEquals(0, collection.size()); collection.add("itemA"); assertEquals(1, collection.size()); collection.add("itemB"); assertEquals(2, collection.size()); } 

    Puede probar el tamaño de la cola antes y después de llamar a su método, algo así como:

     int size = queue.length(); followLink(page, link); assertEquals(size+1, queue.length()); // or maybe size+2? 

    Otra cosa que podría hacer es comenzar con una cola vacía, llamar a FollowLink, luego dequeue el primer elemento y probar sus valores.

    Lo más probable es que su cola sea privada , por lo que no va a funcionar comprobar el tamaño. La solución de “diseño para pruebas” que he visto es hacer uso de los métodos y miembros privados del paquete en su lugar. Dado que es probable que sus pruebas junit estén en el mismo paquete, tendrán acceso.

    Eso por sí solo permite que la prueba de efecto secundario ” queue.length () ” funcione.

    Pero iría más lejos: realmente, debería considerar verificar que su método haya insertado la página correcta y el enlace a su cola. Los detalles para eso requieren más conocimiento sobre cómo está representando (y combinando) la página y el enlace.

    La solución jMock también es muy buena, aunque en verdad estoy mucho más familiarizado con la escritura de mis propios arneses de prueba.

    Entonces, verifique después de la llamada del método la cola, si los valores pasados ​​al método se agregan a la cola. Necesita acceso a la cola (algo así como getQueue ()) para esto.

    Utilice la biblioteca jMock y simule un almacenamiento que contenga su cola, jMock permite afirmar si se invocó el método simulado y con qué parámetros.

    Tenemos dos formas de verificar lo siguiente:

    1. Verifique usando el tamaño de la cola / colección como en el siguiente progtwig: (como lo señaló Patrick)

       @Test public void testfollowlinkAdd() { int size = queue.length(); queue.add(pageLink); //Considering an Object of PageLink Assert.assertTrue(size+1, queue.length()); } 

    O

    1. Haz uso de MockObjects. Los marcos como Mockito pueden ser útiles aquí.