実現したいこと
assertThatを使いList型の返却値(スタブ)と値を比較して一致していたらテスト成功というようにしたい。
▼テスト対象クラス
java
1public class fruit { 2 3 public List<HashMap<String, String>> whatFruit(){ 4 //List<HashMap<Stirng, String>> resultFruit = new ArrayList<HashMap<String, String>>(); 5 //resultFruit.add("APPLE", "NAGANO"); 6 //resultFruit.add("STRAWBERRY", "TOCHIGI"); 7 //resultFruit.add("CHERRY", "YAMAGATA"); 8 9 /* 以下修正文 */ 10 HashMap<String, String> fruitMap = new HashMap<String, String>(); 11 List<HashMap<String, String>> fruitList = new ArrayList<HashMap<String, String>>(); 12 fruitMap.put("APPLE", "NAGANO"); 13 fruitMap.put("STRAWBERRY", "TOCHIGI"); 14 fruitMap.put("CHERRY", "YAMAGATA"); 15 fruitList.add(fruitMap); 16 17 //return resultFruit; 18 /* 以下修正文 */ 19 return fruitList; 20 } 21}
▼テストソース
java
1fruitTest.java 2 3public class fruitTest { 4 5fruit fr = new fruit(); 6 7 new Expections() {{ 8 fr.whatFruit(); 9 result = "スタブ"; 10 }}; 11 12 assertThat(fr.whatFruit(), is("スタブ")); 13 14}
エラー箇所
fruitTest.javaの
java
1assertThat(fr.whatFruit(), is("スタブ"));
で、「型 MatcherAssert のメソッド assertThat(T, Matcher<? super T>) は引数 (List<HashMap<String,String>>, Matcher<String>) に適用できません」
とエラーが出ます。
「result = "スタブ";」で返却値を指定しているのでこのまま比較できるのかと思いました。
しかしList型なので比較できません。
他に実施したこと
java
1assertThat(result, is("スタブ"));
⇒当然resultを変数として認識されているのでエラー
参考にしたサイト
http://tomoyamkung.net/2013/08/26/java-junit-list-assert/
https://www.sejuku.net/blog/15487
※URL直貼りすみません。。。何回もリロードしたのですがリンク設定ができなくて。。
⇒調査中に参考にしたサイトは、以上ですがLISTの中身を確認したいのではない為趣旨がズレていたので参考になりませんでした。
他に気になること
また、エラーと同時に以下のインポートも出現するのでクリックするのですがインポートできません。
クリックしても再度assertThatにカーソルを合わせると出てきます。
Add static import for 'Assert.assertThat'
Add static import for 'MatcherAssert.assertThat'
この理由は何でしょうか。
よろしくお願いいたします。
追記
ソース修正いたしました。
過去に私自身が質問していたところをミスしていました。お恥ずかしい限りです。。
あなたの回答
tips
プレビュー