2010-03-16 4 views
0

Bonjour J'cris test JUnit comment puis-je tester cette méthode .. ce n'est qu'une partie de cette méthode:comment tester cette portion de code

public MyClass{ 

public void myMethod(){ 
List<myObject> list = readData(); 
} 
} 

Comment vais-je faire le test pour cela? ReadData est une méthode privée dans MyClass?

+1

Je pense que vous devez étendre votre exemple un peu. En l'état, la méthode n'a aucun comportement visible (sauf pour le retour), donc il n'y a rien à tester. –

+0

Est-ce que 'readData' modifie l'état d'une instance de MyClass? Si c'est le cas, vous devriez tester l'état modifié. Sinon, je ne comprends pas ce que fait 'readData'. –

+0

La liste est erronée. Vous devez spécifier une classe entre les chevrons, par exemple Liste . –

Répondre

0

Comme écrit, cela n'a aucun sens de tester myMethod() à moins que readData() modifie l'état de l'instance de la manière dont Frank Grimm l'a mentionné. Une chose à faire serait de changer myMethod() afin qu'il mette list dans une variable d'instance List. Ensuite, vous pourriez faire quelque chose comme ceci:

@Test 
public void testThatReadDataReturnsACorrectList(){ 
    MyClass inst = new MyClass(); // Add args to ctor call if needed - maybe a file path that readData() will use? 
    inst.myMethod(); 

    // Create a list of MyClasses that match what you expect readData() to return: 
    List<MyClass> expectedList = new List<>(); 
    expectedList.Add(new MyClass(/* Some arguments */)); 
    expectedList.Add(new MyClass(/* Some more arguments */)); 
    expectedList.Add(new MyClass(/* Some other arguments */)); 

    // Assert that the list you created matches the list you get back from 
    assertArrayEquals("Did not get the list expected", expectedList.ToArray(), inst.getList().ToArray()); 

} 

Vous auriez encore écrire MyClass.getList() pour retourner la variable d'instance List. Pour être robuste, vous pouvez faire en sorte que le constructeur MyClass accepte un objet qui implémente une interface similaire à IMyReadInterface. readData() utiliserait cet objet. Ensuite, dans votre test, vous pouvez instancier un simulateur qui implémente également IMyReadInterface, configurer le simulateur pour fournir les données nécessaires afin que readData() fonctionne correctement et construire inst avec ce simulacre.

1

Vous pouvez toujours tester l'objet List pour voir s'il contient tous les éléments que readData() est censé insérer dans la liste. Créez une méthode publique qui renvoie la liste et vous pouvez comparer la longueur et les éléments de cette liste à ce que vous attendez d'y être.

0

À moins d'en savoir plus sur la méthode, tout ce que vous devez vraiment tester est que le retour de readData est dans un format qui correspond à votre liste générique. Sinon, il est difficile de recommander quoi que ce soit sans en savoir plus sur ce qui se passe dans votre méthode privée.