我正在编写一个 JUnit 测试用例,它调用最终导致native
调用函数调用的代码。这是我要编写的测试的伪代码:
@Test
public void testNoWritesToStdOut() {
x = new StdOutTrap();
x.startTrappingStdOut();
try {
callTheFunctionUnderTest(); // Nothing should be written to stdout
assertEquals("", x.capturedOutput());
} finally {
x.stopTrappingStdOut();
}
}
注意callTheFuntionUnderTest()
调用native
可能是 C 代码的代码,如下所示:
...
printf("fail\n");
或 C++ 代码,如:
...
std::cout << "fail" << std::endl;
为清楚起见,我不想将调用重定向到System.out.X
自定义PrintStream
via System.setOut
。我想获取stdout
在执行native
我无法控制的调用期间写入标准流的字节的副本(如果有)。
想法?