écrit dans ma classeJunit @ Méthode d'essai, entrée donnant à la méthode d'exécution
public static Advertisement[] createAd() throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Advertisement[] ad = new Advertisement[5];
int count =0;
char ch;
do
{
System.out.println("Enter advertisement id:");
int id=Integer.parseInt(br.readLine());
System.out.println("Enter advertisement type:");
String type=br.readLine();
ad[count]= new Advertisement(id, type);
count++;
System.out.println("Do you want publish another advertisement(Y/N):");
ch = br.readLine().charAt(0);
if((ch!='y')&&(ch!='Y'))
{
break;
}
}while(count<=5);
if(count==5)
{
System.out.println("Maximum ads reached");
return ad;
}
return ad;
}
Juint @Test method
@Test
public void testCreateAd() throws IOException
{
Advertisement[] a = Advertisement.createAd();
assertTrue("Maximum five ads only should be created",(a.length<=5));
}
Je veux vérifier, méthode createAd doit retourner maximum de 5 objet de la publicité de type. Mais quand la méthode @Test est en cours d'exécution, il est possible de passer l'entrée à la méthode readLine par le biais de laquelle
La chose à regarder: https://stackoverflow.com/a/6416591/1531124. La chose est: vous * pouvez * tester le code qui lit à partir de System.in en utilisant quelques astuces. Mais: vous ne devriez pas le faire. Vous cachez * complètement le fait que votre code lit normalement depuis stdin depuis votre code de production. Alors que cela fonctionne avec * tout * type d'entrée. – GhostCat