Comment tester la méthode void avec les outils de test Junit?

je viens de passer à mettre en œuvre une méthode void followlink(obj page,obj link) qui ajoute simplement la page et le lien à la file d'attente. J'ai essayé en vain de tester ce genre de méthode.

Tout ce que je veux est de tester que dans la file d'attente contient la page et le lien reçu de la méthode followlink. Ma classe de test étend déjà TestCase. Alors, quelle est la meilleure façon de tester une telle méthode?

27
demandé sur Rotek 2009-08-07 16:50:52

6 réponses

JUnit FAQ contient une section sur les méthodes d'essai qui retournent void. Dans votre cas, vous souhaitez tester un effet secondaire de la méthode appelée.

L'exemple donné dans la FAQ teste que la taille d'un Collection change après un article est ajouté.

@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());
}
40
répondu Bill the Lizard 2014-02-19 01:03:56

Vous pouvez tester la taille si la file d'attente avant et après l'appel de votre méthode, quelque chose comme:

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

une autre chose que vous pourriez faire est de commencer avec une file d'attente vide, appeler followLink, puis dequeue le premier élément et tester ses valeurs.

15
répondu Patrick McDonald 2009-08-07 13:10:11

très probablement, votre file d'attente est privécolis privé méthodes et membres à la place. Puisque vos tests junit sont susceptibles d'être dans le même paquet, ils y auront accès.

Que par lui-même permet à l' "file d'attente.longueur() > " test des effets secondaires.

Mais j'irais plus loin: vraiment, vous devriez envisager de vérifier que votre la méthode a inséré l' correct page et lien vers votre file d'attente. Les détails pour cela exigent plus de connaissances sur la façon dont vous représentez (et combinez) la page et le lien.

jMock la solution est également très bonne, bien qu'en vérité je suis beaucoup plus familier avec l'écriture de mes propres harnais d'essai.

3
répondu CPerkins 2016-01-26 16:39:27

Donc, - vérifier, après l'appel à la méthode de la file d'attente, si les valeurs passées à la méthode sont ajoutés à la file d'attente. Vous avez besoin d'accéder à la file d'attente (quelque chose comme getQueue()) pour cela.

0
répondu Mnementh 2009-08-07 12:58:38

utilisez la bibliothèque jMock et mock a stockage qui contient votre file d'attente, jMock permet d'affirmer s'est moqué de la méthode a été appelée et avec quels paramètres.

0
répondu Chris Ciesielski 2009-08-07 14:56:41

Nous avons deux façons de vérifier les points suivants :

  1. vérifier en utilisant la taille de la file d'attente/Collection comme dans le programme ci-dessous : (Comme le souligne Patrick)

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

OR

  1. utilisez MockObjects. Cadres comme Mockito peut être utile ici.
0
répondu subodhkarwa 2017-08-30 10:52:10