我在JUnit中,测试文件模拟是否正常。出现了一些问题并且抛出了异常,但它却给出了原因,因为我的失败"调用
@Test
public void readFile() {
RegistryTask task = new RegistryTask(false, null);
try {
FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
Path foo = fs.getPath("/foo");
Files.createDirectory(foo);
String text = "hello world!";
Path hello = foo.resolve("hello.txt"); // /foo/hello.txt
Files.write(hello, ImmutableList.of(text), StandardCharsets.UTF_8);
Path filepath = Paths.get("/foo/hello.txt");
byte[] readBytes = Files.readAllBytes(filepath); // line 65
// String readString = new String(readBytes);
// assertEquals(text, readString);
} catch (IOException e) {
String err = e.getStackTrace().toString();
fail("IOException:\n" + err); // line 71
}
}
我逐行取消注释以查看哪一行导致失败。我想用真实的消息进行调试,但我失败的输出是:
readFile(RegistryTaskTest) Time elapsed: 0.132 sec <<< FAILURE!
java.lang.AssertionError: IOException:
[Ljava.lang.StackTraceElement;@363ee3a2
at org.junit.Assert.fail(Assert.java:88)
at RegistryTaskTest.readFile(RegistryTaskTest.java:71)
如何打印出与调用fail相关的字符串,与IOException相比?我希望看到与第65行相关的某些。
下面的评论解释了为什么这是重复的。