2016-07-31 2 views
-1

예를 들어, 다음과 같은 주요 방법으로.main 메소드에서 나오는 출력을 확인하는 방법은 무엇입니까?

public class Solution { 
    public static void main(String []argv) { 
     System.out.println("Hello World."); 
     System.out.println("Hello Java."); 
    } 
} 

플랫폼 (Hackerrank, 예를 들어)에서 main 메소드가 예상 출력을 인쇄하는 방법을 확인하는 코드를 알고 싶습니다.

Hello World. 
Hello Java. 

처음에는 Junit으로 어떻게하는지 상상하기 쉽지 않습니다. 내가 외부 프로그램 출력을 확인하고 있다고 판단, 나는 이런 식으로 뭔가 의미 :

$ java Solution | runtests 

유닉스 파이프 라이닝을 사용하여

답변

3

당신의 추측이 확실히 수행 할 수있는 방법입니다 감사합니다.

자바에서

, 당신은 당신이 고려해야 있도록 ProcessBuilderstart() 방법은 IOException을 던질 수있는 java 명령을 실행하고 InputStream

// Create and start the process 
Process pb = new ProcessBuilder("java", "Solution").start(); 
// Create a reader to read in each output line 
BufferedReader reader = new BufferedReader(new InputStreamReader(pb.getInputStream())); 
String line; 
// Read in line by line 
while((line = reader.readLine()) != null) { 
    // ... 
} 

주를 통해 출력을 읽고 그것을 할 수 .

+0

나는'ProcessBuilder'도 사용하려고 생각했지만 자바 코드를 호출 할 때 가장 좋은 방법은 직접 호출하는 것입니다. 그렇지 않습니까? – Dici

+0

@Dici 그래, 코드를 작성한 코드가 코드를 실행하는 것을 방해하지 않는 한, 직접 호출하는 것이 가장 좋은 방법 일 것입니다 (코드는 별도의 프로세스를 통해 실행되는 코드가 자체 환경에있을 것입니다). – SamTebbs33

+1

네 솔루션은 새로운 JVM에 걸쳐있다. 이는 격리 목적으로는 좋은 일일 수 있지만 평가할 솔루션이 많은 서버에서 지속 가능한지 궁금합니다. 어쩌면 똑같은 JVM에서 두 가지 솔루션을 실행하는 것이 왜 나쁜지 알 수는 있겠지만 어쩌면 괜찮을 수도 있습니다. +1 – Dici

관련 문제