4
我該如何編寫一個JUnit測試,檢查FileInputStream是否已關閉?如何測試FileInputStream已關閉?
考慮下面的代碼,
import java.io.FileInputStream;
class FileInputStreamDemo {
public static void main(String args[]) throws Exception {
FileInputStream fis = new FileInputStream(args[0]);
// Read and display data
int i;
while ((i = fis.read()) != -1) {
System.out.println(i);
}
fis.close();
}
}
我想編寫一個測試:
@Test
public void test() {
FileInputStreamDemo.main("file.txt");
// test here, if input stream to file is closed correctly
}
儘管此代碼示例沒有多大意義,我想現在怎麼樣編寫一個JUnit測試來檢查FIS是否已關閉。 (如果可能的話:甚至沒有參考原始FIS對象)
事實上,這是一個很好的解決方案。如果感興趣的方法從兩個文件名中創建兩個FIS,您將如何執行此操作。如何測試,如果第一個FIS被正確關閉,第二個在創建時拋出異常? – 2012-07-11 19:48:03
首先你的MockInputStream需要有時會拋出異常的能力。您可以從測試中控制它,並在其中設置一個屬性,使其引發異常。您可以在模擬對象中使用靜態變量來告訴它在嘗試實例化時引發異常。更好的方法是使用你可以做同樣的事情的工廠。然後,您可以在測試中更換工廠,以便始終引發異常。 – 2012-07-11 21:28:01