0
我在寫一個調用代碼的JUnit測試用例,最終導致調用native
函數調用。下面是測試的僞代碼,我想寫:在Java代碼中捕獲本地STDOUT寫入
@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.setOut
將呼叫重定向到System.out.X
到定製PrintStream
。我想獲得在執行native
調用期間被寫入stdout
標準流的字節的副本(如果有的話),我無法控制該字節。
想法?