J'essaie d'apprendre quelques tests unitaires pour des méthodes plus compliquées. J'ai une méthode de recherche linéaire qui recherche un tableau et retourne un autre tableau qui contient les index de la "cible" si trouvé. Comment pourrais-je écrire un test pour cette méthode? Voici la méthode ci-dessous.Tests unitaires Linéaire Méthode de recherche
public static <T extends Comparable> int[] linearSearch3 (T[] data, T
target)
int count = 0;
int index = 0;
int[] indices = new int[data.length];
for (int i = 0; i < data.length;i++){
if (data[i] == null) break;
if (data[i].compareTo(target) == 0){
indices[count] = i;
count++;
}
}
Arrays.copyOf(indices, count);
int[] copy = Arrays.copyOf(indices,count);
if(count != 0){
return copy;
}
else
return null;
Voici ce que j'ai jusqu'à présent dans ma méthode de test. Les deux tableaux sont des champs de ma classe de test. intArray étant le tableau que je cherche. et newArray étant le tableau que je veux retourner? Cependant, je ne suis pas sûr si je vais même faire correctement. Im obtenir une erreur de types incompatibles sur la deuxième ligne. "aucune instance de type T n'existe de telle sorte que int [] est conforme à Integer où T est une variable de type".
private final Integer[] intArray = {2, 5, 6, 8, 12, 17, 3, 45, 29, 88, 76, 54,
1, 12, 5, 41, 12, 99};
private final Integer[] newArray = {2};
@Test
public <T extends Comparable> void testLinearSearch3() {
System.out.println("Testing LinearSearch3");
Integer result = Searching.linearSearch3(intArray,(Integer)2);
toute aide serait appréciée. Je vous remercie.
Je recommande d'ajouter une assertion de longueur avant la boucle, et feed assertEquals les deux résultats [i] et newArray [i], de sorte qu'ils peuvent utiliser l'interface Objects # égale – Igor