2012-11-03 21 views
5

Tôi cố gắng để viết test Junit cho chức năng đưa ra dưới đây:làm thế nào để chấp nhận đầu vào từ người dùng trong Junit console

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

Bây giờ vấn đề của tôi là khi tôi tạo ra một trường hợp thử nghiệm Junit cho nó, nó không ngoại trừ thông tin nhập từ người dùng:

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."); 
} 

Hãy gợi ý tôi nên làm gì để chấp nhận đầu vào từ người dùng.

+0

tôi đã gắn thẻ junit aswell tomake nó phù hợp hơn .. :) – PermGenError

+0

@ chaitanya10 Cảm ơn – user1778824

+2

Bạn không cần đầu vào từ người dùng trong các kiểm tra JUnit. Nếu bạn cần kiểm tra với một số 'InputStream', hãy gắn nó vào đầu vào' OutputStream' và nguồn cấp dữ liệu của bạn theo chương trình. –

Trả lời

7

Bạn có thể sử dụng System.setIn() để người dùng nhập vào giả:

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

Bây giờ nếu bạn gọi phương thức set() của bạn nó sẽ đọc dữ liệu từ chuỗi của bạn chứ không phải là từ đầu vào tiêu chuẩn.

Các vấn đề liên quan