如何检查 main 方法的输出?
How to check the coming output from main method?
例如下面的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
谢谢
你猜想使用 unix 流水线肯定是可以做到的。
在 Java 中,您可以通过 运行 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) {
// ...
}
请注意 ProcessBuilder
的 start()
方法可以抛出 IOException
,因此您需要考虑到这一点。
例如下面的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
谢谢
你猜想使用 unix 流水线肯定是可以做到的。
在 Java 中,您可以通过 运行 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) {
// ...
}
请注意 ProcessBuilder
的 start()
方法可以抛出 IOException
,因此您需要考虑到这一点。