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.
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. –
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'. –
La liste est erronée. Vous devez spécifier une classe entre les chevrons, par exemple Liste . –