2012-11-03 20 views
5

Sto cercando di scrivere caso di test JUnit per la funzione indicati di seguito:come accettare input da utente nella console Junit

class A{ 
    int i; 
    void set() 
    { 
    Scanner in=new Scanner(System.in); 
    i=in.nextInt(); 
    } 
} 

Ora il mio problema è quando creo un caso di test JUnit per esso, non è così tranne l'input dell'utente:

public void testSet() throws FileNotFoundException { 
    System.out.println("set"); 
    A instance = new A(); 
    int i=1; 
    instance.set(i); 
    // TODO review the generated test code and remove the default call to fail. 
    //fail("The test case is a prototype."); 
} 

Si prega di suggerire cosa devo fare per accettare l'input da parte dell'utente.

+0

Ho taggato junit, ma è più appropriato .. :) – PermGenError

+0

@ chaitanya10 Grazie – user1778824

+2

Non è necessario l'input dell'utente nei test JUnit. Se hai bisogno di testare con alcuni 'InputStream', collegalo al tuo' OutputStream' e feed input programmaticamente. –

risposta

7

È possibile utilizzare System.setIn() all'input dell'utente finto:

String inputData = "user input data"; 
System.setIn(new java.io.ByteArrayInputStream(inputData.getBytes())); 

Ora, se si chiama il metodo set() esso leggerà i dati dal vostro stringa piuttosto che dallo standard input.