質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Java

    13159questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JUnit

    176questions

    JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

ArrayListのJUnitテストについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 377

mitsu12345

score 7

今、StudentクラスをタイプにもつArrayList<Student>のJUnitテストをしようとしているんですが、エラーメッセージに、期待値と、実際の値が異なると表示されます。目視で確認(エラーメッセージをメモ帳に張り付けて、期待値とどの箇所が間違っているかも何回も確認しましたが)するかぎり、完全に一致しています。にもかかわらず、エラーメッセージで値が異なると表示されてしまいます。よろしくお願いします。

java.lang.AssertionError: expected: java.lang.String<<ID>: a <PASSWORD>: a <NAME>: a <NATIONALITY>: a <ADDRESS>: a <UNIVERSITY>: a> but was: Actor.Student<<ID>: a <PASSWORD>: a <NAME>: a <NATIONALITY>: a <ADDRESS>: a <UNIVERSITY>: a>
    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failNotEquals(Assert.java:834)
    at org.junit.Assert.assertEquals(Assert.java:118)
    at org.junit.Assert.assertEquals(Assert.java:144)
    at junittest.AdministratorTest.listTest(AdministratorTest.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
//JUnitTestのクラスです
public class AdministratorTest {

    public ArrayList<Student> list;

    @Before
    public void setUp() {
        list = new ArrayList<Student>();
    }

@Test
public void listTest() {
    Administrator.add("a", "a", "a", "a", "a", "a", list);
    Administrator.add("2", "1", "2", "1", "2", "1", list);
    Administrator.add("3", "1", "1", "3", "1", "1", list);
    assertEquals("<ID>: " + "a" + " <PASSWORD>: " + "a"  + " <NAME>: " + "a" + " <NATIONALITY>: " + "a" + " <ADDRESS>: " + "a" + " <UNIVERSITY>: " + "a", list.get(0));
}

//Studentクラスです
public class Student implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    String name;
    String id;
    String password;
    String nationality;
    String address;
    String university;

public Student(String id, String password, String name, String nationality,String address, String university){
        this.id = id;
        this.password = password;
        this.name = name;
        this.nationality = nationality;
        this.address = address;
        this.university = university;
    }    

public String toString() {
        return "<ID>: " + this.id + " <PASSWORD>: " + this.password  + " <NAME>: " + this.name + " <NATIONALITY>: " + this.nationality + " <ADDRESS>: " + this.address + " <UNIVERSITY>: " + this.university;
    }


//Administratorクラスです
public static ArrayList<Student> list = new ArrayList<Student>();

public static void add(String id, String password, String name, 
String nationality, String address, String univeristy, ArrayList<Student> list) {
        list.add(new Student(id, password, name, nationality, address, univeristy));
    }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

assertEquals("<ID>: " + "a" + " <PASSWORD>: " + "a"  + " <NAME>: " + "a" + " <NATIONALITY>: " + "a" + " <ADDRESS>: " + "a" + " <UNIVERSITY>: " + "a", list.get(0));


あなたがここで比較しているのはStringとStudentです。equalsが成立するわけがありません。
第2引数をlist.get(0).toString()とでもしないと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/17 05:43

    型が違うとequalsが成立しないんですね。list.get(0).toString()と修正したら、上手くtrueになりました。
    ありがとうございました。

    キャンセル

  • 2017/11/17 11:34

    内容が同じArrayListとLinkedListのように型が違ってもequalsが成立するケースはありますが、Stringとequalsが成立するのは同じ文字列を表すStringのみです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13159questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JUnit

    176questions

    JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。