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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JUnit

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

Java

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

Q&A

解決済

1回答

9151閲覧

ArrayListのJUnitテストについて

退会済みユーザー

退会済みユーザー

総合スコア0

JUnit

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

Java

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

0グッド

0クリップ

投稿2017/11/16 17:52

今、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)

java

1//JUnitTestのクラスです 2public class AdministratorTest { 3 4 public ArrayList<Student> list; 5 6 @Before 7 public void setUp() { 8 list = new ArrayList<Student>(); 9 } 10 11@Test 12public void listTest() { 13 Administrator.add("a", "a", "a", "a", "a", "a", list); 14 Administrator.add("2", "1", "2", "1", "2", "1", list); 15 Administrator.add("3", "1", "1", "3", "1", "1", list); 16 assertEquals("<ID>: " + "a" + " <PASSWORD>: " + "a" + " <NAME>: " + "a" + " <NATIONALITY>: " + "a" + " <ADDRESS>: " + "a" + " <UNIVERSITY>: " + "a", list.get(0)); 17} 18 19//Studentクラスです 20public class Student implements Serializable{ 21 /** 22 * 23 */ 24 private static final long serialVersionUID = 1L; 25 String name; 26 String id; 27 String password; 28 String nationality; 29 String address; 30 String university; 31 32public Student(String id, String password, String name, String nationality,String address, String university){ 33 this.id = id; 34 this.password = password; 35 this.name = name; 36 this.nationality = nationality; 37 this.address = address; 38 this.university = university; 39 } 40 41public String toString() { 42 return "<ID>: " + this.id + " <PASSWORD>: " + this.password + " <NAME>: " + this.name + " <NATIONALITY>: " + this.nationality + " <ADDRESS>: " + this.address + " <UNIVERSITY>: " + this.university; 43 } 44 45 46//Administratorクラスです 47public static ArrayList<Student> list = new ArrayList<Student>(); 48 49public static void add(String id, String password, String name, 50String nationality, String address, String univeristy, ArrayList<Student> list) { 51 list.add(new Student(id, password, name, nationality, address, univeristy)); 52 }

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

java

1assertEquals("<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/16 18:08

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/16 20:43

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

2017/11/17 02:34

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問