我有这样一个测试:为什么在我的字符串值后有括号?
String dir = "/foo";
String fileName = "hello.txt";
String pathString = dir + "/" + fileName;
String text = "hello world!";
MyTask task = new MyTask();
FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
Path foo = fs.getPath(dir);
Files.createDirectory(foo);
Path hello = foo.resolve(fileName);
Files.write(hello, ImmutableList.of(text), StandardCharsets.UTF_8);
task.setFileSystem(fs);
String fileValue = task.readFile(pathString);
// Doing this just shows "fail whale: hello world!"
// fail("fail whale: " + fileValue);
// Failure from here adds brackets
assertEquals(text, fileValue);
我得到一个失败这样的:
org.junit.ComparisonFailure: expected:<hello world![]> but was:<hello world![
]>
如果我扭转论据,我可以看到readFile
绝对是创造新的生产线,它的不只是我的终端截断。
我不知道为什么JUnit在我的字符串之后显示括号,而且我更加困惑的是为什么会添加一个空格。
readFile
很简单:
public String readFile(String path) {
try {
return new String(Files.readAllBytes(fs.getPath(path)));
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
Java: Is assertEquals(String, String) reliable?使得String
的参考是一个Object
,但如果是这样的话,一个括号只是意味着Object
,还是真搞不清楚新线。
'Files.write'在行末写行结尾(\ n)符号 –