我有一個JUnit測試類,它使用Mockito,我需要測試是否有記錄正確。基本上,它看起來像:單元測試日誌使用流只爲第一次測試工作
public class MyTest {
private final PrintStream outDefault = System.out;
private final PrintStream errDefault = System.err;
private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
private final ByteArrayOutputStream errContent = new ByteArrayOutputStream();
@Before
public void setUp() {
System.setOut(new PrintStream(outContent));
System.setErr(new PrintStream(errContent));
}
@After
public void tearDown() {
System.setOut(outDefault);
System.setErr(errDefault);
}
@Test
public void Test1_Condition_Expected() {
assertTrue(errContent.toString().toLowerCase().contains("..."));
}
...
@Test
public void TestN_Condition_Expected() {
assertTrue(errContent.toString().toLowerCase().contains("..."));
}
}
我也試圖做了沖洗,並關閉在@After流的,但它似乎並沒有工作也不:
@After
public void tearDown() {
try {
outContent.flush();
errContent.flush();
outContent.close();
errContent.close();
} catch (IOException e) {
e.printStackTrace();
}
System.setOut(outDefault);
System.setErr(errDefault);
}
當我運行整個班級,第一次考試都通過了,但其餘的都沒有通過。如果我逐個運行測試,那麼所有測試都會通過。
我已經調試了代碼,一切似乎都正常工作,但對於除第一個之外的測試,流沒有獲取日誌,所以顯然它們失敗。
您是否在每次測試後都嘗試過沖洗? – Mena
是的,我試過了。反正它不工作... – Danziger
哪個版本的JUnit? –