JXK*_*ENG 3 java junit unit-testing assert
预期输出和实际输出的内容相同,但我得到 org.opentest4j.AssertionFailedError
我试图用所有替换/n,System.lineSeparator()但我得到的输出是:“内容仅在行分隔符中存在差异”
@BeforeEach
public void setUpStreamsAndEmptyFile() {
System.setOut(new PrintStream(outContent));
System.setErr(new PrintStream(errContent));
// emptying file contents
try {
PrintWriter pw = new PrintWriter(filePath);
pw.close();
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
}
@AfterEach
public void restoreStreams() {
System.setOut(originalOut);
System.setErr(originalErr);
}
@Test
public void executeCreateEventCommand() {
String expected = "\t Got it. I've added this task: " + System.lineSeparator() +
"\t [Event][?] Project Meeting (at: 28/08/19 1600 - 28/08/19 1800)" + System.lineSeparator() +
"\t Now you have 1 task in the list" + System.lineSeparator();
CreateEventCommand command = new CreateEventCommand("Project Meeting /at 28/08/19 1600 - 28/08/19 1800");
try {
command.execute(tasks, ui, storage);
} catch (DukeException e) {
System.out.println("execute create event command test should pass, but it didn't " + e.getMessage());
}
assertEquals(expected, outContent.toString());
}
Run Code Online (Sandbox Code Playgroud)
也许您可以尝试检查结果中是否有多个子字符串。你可以用assertThatand Hamcrest做到这一点。所以你可以避免行分隔符。
import org.hamcrest.core.StringContains;
import org.junit.Assert;
...
String expectedSubString1 = "Got it. I've added this task:";
String expectedSubString2 = "[Event][?] Project Meeting (at: 28/08/19 1600 - 28/08/19 1800)";
String expectedSubString3 = "Now you have 1 task in the list";
...
String result = outContent.toString();
Assert.assertThat(result, StringContains.containsString(expectedSubString1));
Assert.assertThat(result, StringContains.containsString(expectedSubString2));
Assert.assertThat(result, StringContains.containsString(expectedSubString3));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1475 次 |
| 最近记录: |