我正在尝试测试一个加载方法,该方法将引发StreamCorruptedException。但是当我用junit 4测试它时,测试失败了。
我的加载方法:
public BookDataProvider(String filename) throws StreamCorruptedException { ... }
我的测试课:
public class TestClass {
@Test (expected=StreamCorruptedException.class)
public void wrongFileTest() throws StreamCorruptedException {
BookDataProvider bdp = new BookDataProvider("wrong filename");
}
}
该方法引发异常,但测试失败。我做错什么了?
最佳答案
从您的代码中,我看到您的测试正在将错误的文件名传递给BookDataProvider
构造函数,这不会导致StreamCorruptedException,而只会导致IOException。由于数据反序列化失败而发生StreamCorruptedException,这主要是由于用于写入和读取的流中的差异所致。例如,如果未使用ObjectOutputStream写入数据,则尝试使用ObjectInputStream读取数据时会发生这种情况。