输出相同时的 AssertionFailedError

JXK*_*ENG 3 java junit unit-testing assert

预期输出和实际输出的内容相同,但我得到 org.opentest4j.AssertionFailedError

我试图用所有替换/nSystem.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)

tob*_*sob 6

也许您可以尝试检查结果中是否有多个子字符串。你可以用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)