0

基本的な JUnit チュートリアルを作成しようとしています。これを、基本的なサービス レイヤーを使用した単純な Hello World の例で示しています。私の問題は、テスト出力がコントロール データと一致していても、assertEquals がまだ false を返していることです。assertEquals が機能しない理由と、これを修正する方法を教えてください。

JUnit エラー

org.junit.ComparisonFailure: expected:<Hello World[]> but was:<Hello World[
]>

そして私のコードテストサンプル

package com.springtutorial.mavenhelloworld.service;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.StandardOutputStreamLog;

import com.springtutorial.junitandmavenhelloworld.service.HelloWorldMessage;
import com.springtutorial.junitandmavenhelloworld.service.HelloWorldMessageImplementation;
import com.springtutorial.junitandmavenhelloworld.service.HelloWorldMessageService;
import com.springtutorial.junitandmavenhelloworld.service.HelloWorldMessageServiceImplementation;

public class HelloWorldMessageServiceImplementationTest
{
    static String controlMessageContent;
    static HelloWorldMessage controlMessage;

    HelloWorldMessage testMessage;
    HelloWorldMessageService testMessageService;

    @Rule
    public final StandardOutputStreamLog testLog = new StandardOutputStreamLog();

    @BeforeClass
    public static void setUpBeforeClass() throws Exception
    {
    controlMessageContent = new String("Hello World");
    controlMessage = new HelloWorldMessageImplementation(controlMessageContent);
    }

    @Before
    public void setUp() throws Exception
    {
    testMessage = new HelloWorldMessageImplementation("Hello World");
    testMessageService = new HelloWorldMessageServiceImplementation(testMessage);
    }

    @Test
    public void testGetMessage()
    {
    assertEquals(testMessage, testMessageService.getMessage());
    }

    @Test
    public void testSetMessage()
    {
    testMessageService.setMessage(new HelloWorldMessageImplementation("Test Message"));
    assertEquals("Test Message", testMessageService.getMessage().getMessageAsString());
    }

    @Test
    public void testPrintMessageToConsole()
    {
    testMessageService.printMessageToConsole();
    assertEquals(controlMessageContent, testLog.getLog());
    }
}

私の HelloWorldMessageServiceImplementation コード

package com.springtutorial.junitandmavenhelloworld.service;

public class HelloWorldMessageServiceImplementation implements
    HelloWorldMessageService
{
    HelloWorldMessage message;

    public HelloWorldMessageServiceImplementation(HelloWorldMessage newMessage)
    {
    super();
    this.setMessage(newMessage);
    }

    public HelloWorldMessage getMessage()
    {
    return this.message;
    }

    public void setMessage(HelloWorldMessage newMessage)
    {
    this.message = newMessage;
    }

    public void printMessageToConsole()
    {
    System.out.println(this.message.getMessageAsString());
    }

}
4

1 に答える 1

0

問題はprintln()HelloWorldMessageServiceImplemenationクラスでの使用です。\nこの関数は、出力が制御データと一致しない原因となるキャリッジ リターンを文字列の末尾に追加します。これをprint()メソッドに変更するか、テスト文字列の末尾にキャリッジ リターンを追加します。

テスト コントロール データにキャリッジ リターンを追加する正しい方法は次のとおりです。

controlMessageContent = new String("Hello World\n");
于 2013-03-21T05:09:51.243 に答える