Créer Junit test

Fermé
suma - 24 oct. 2017 à 04:09
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 24 oct. 2017 à 08:35
Bonjour , s'il vous j'ai besoin de votre aide, c'est la 1ere fois que j'utilise JUnit et je ne sais pas comment écrire un junit test qui test cette methode (c'est une methode qui crée un vecteur):



public int[] CreatVetor(int size){
int j;
/*Initialisation du vecteur*/
if(size>0){
vector=new int[size];
/*Boucle pour remplir le vecteur */
for (j=0;j<size;j++){
System.out.println("enter element " +j+" of the vector");
Scanner e=new Scanner(System.in);
int element=e.nextInt();
vector[j]=element;
}}
/*Le retour du vecteur crée*/
return(vector);

}

quand j'ai lancé le test il s'affichait cette methode:

public void testCreatVetor() {
System.out.println("CreatVetor");
int size = 0;
VectorHelper instance = new VectorHelper();
int[] expResult = null;
int[] result = instance.CreatVetor(size);
assertArrayEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
24 oct. 2017 à 08:35
Bonjour,

Dans la notion de test unitaire, il y a le terme "unitaire" qui signifie que tu ne testes que des choses simples.

L’interaction utilisateur/machine via le clavier et l'utilisation du Scanner est loin d'être quelque chose de simple.

Le mieux à faire ici serait un mock de System.in.

// import java.io.*;

@Test
public void tets() throws IOException {
    int[] expResult = { 42 };

    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bytes.write("42".getBytes());
    System.setIn(new ByteArrayInputStream(bytes.toByteArray()));

    VectorHelper instance = new VectorHelper();
    Assert.assertArrayEquals(expResult, instance.CreatVetor(1));
}
0