0

所以,简而言之:

我有一个无效的方法,并将内容打印到标准输出。

我有第二个文件,用于测试函数的输出与它应该是什么,如果它们都通过则返回 true。

我有一个 makefile 来检查测试文件的输出,以确保所有测试都通过了。

我的问题是我不知道如何将 void 方法的打印输出与测试文件中的内容进行比较。我被告知要修改 make 文件,但我不知道如何修改。我对具有返回类型的方法的其他测试如下所示:

private static boolean testNumFunc() {
    if (MainFile.numFunc(300) == /*proper int output*/) {
        return true;
    }
    return false;
}

如何通过修改 makefile 以这种方式测试 void 函数?

4

2 回答 2

1

您可以将其包装stdout在自己的包装器中并阅读结果...

例如...

public class StreamCapturer extends OutputStream {

        private PrintStream old;

        public StreamCapturer(PrintStream old) {
            this.old = old;
        }

        @Override
        public void write(int b) throws IOException {
            char c = (char) b;
            // Process the output here...
            // Echo the output back to the parent stream...
            old.print(c);
        }        
    }    
}

然后你会简单地使用类似的东西来初始化它......

System.setOut(new PrintStream(new StreamCapturer(System.out)));
于 2013-09-12T01:04:19.167 回答
0

您可以将 system.out 的输出通过管道传输到应用程序的其他方面。这是一种方法。实现此任务的方法有很多。这完全取决于您在应用程序中的需要

于 2013-09-12T01:18:35.830 回答