eclipseとJUnitで確認する。Java、Eclipse、JUnitに関連した技術情報のブログです。eclipseとJUnitで確認する。ユニットテストスポンサードリンクJava8(JDK8)では、ラムダ式の導入を前提とした、コレクションAPIの新機能が追加されました。本エントリーでは、このコレクションAPIの新機能(強化部分)をJUnitのユニットテストを書きながら説明をさせていただきます。利用する環境は、Java8に対応したEclipse(4.4)となります。java.util.Listに追加されたメソッドjava.util.Listに追加されたメソッドは以下の4つです。forEachsortreplaceAllremoveIfforEachメソッド拡張for文の動作と同じです。それを以下のJUnitのユニットテストのコードで検証してみました。elementValue));}}ソースのコメントに記載している通りですが、ListのforEachと拡張for文が同じ動作をしていることがご理解いただけると思います。純粋にforEachと拡張for文の動きが同じである事をイメージしていただけると思います。実行結果は以下のようになりました。sortメソッドsortメソッドが導入されるまでは、java.util.Collections.sortを用いることが一般的でした。ソート時の各要素の比較処理がデフォルトの処理でOKであれば、至極使いやすいメソッドです。(Listの要素のオブジェクトの比較処理で昇順に並び替える)しかし、少し変わった比較処理を利用してソートする場合は、java.util.Comparatorインターフェースを実装したクラスが必須となります。数値を文字列に変換したリストのソート・java.util.Collections.sortを利用した実装例10から0の数値を文字列に変換した値を要素に持つListを作成しこれをjava.util.Collections.sortでソートし、ソート後のリストの要素をSystem.out.printlnで出力してみます。これ以降は、対象となるテストケースのみを記載させていただきます。//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。ArrayList<String>();//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。{System.out.println(value);}}出力結果は以下のようになりました。912345678910110234567891の後に10が・・・、文字列として比較されているので、昇順に並ぶとそうなりますよね。これを数値の大小比較の昇順で並べるようにすると、java.util.Comparatorインターフェースの利用が必須となります。//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。//数値に変換して大小比較を行う。ArrayList<String>();//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。{//数値に変換して大小比較を行う。sortTargetList.get(i));}}無名クラスのComparatorを作成して、ソート時に指定するように変更し、ソート後に、assertEqualsで数値の昇順にソートされているかを検証するようにしました。JUnitのテストも通りました。今度はjava.util.Listのsortメソッドを利用します。//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。ArrayList<String>();//0詰め数値にして、文字悦の単純比較ではうまくソートできないようにする。先にJUnitのテストを実行結果です。コードの行数は4行減っています。何より処理が直感的になっていると思います。replaceAllメソッド条件に合致するListの要素を全て削除するメソッドです。・ListのreplaceAllメソッドを利用しない実装例replaceAllの便利さを際立たせるために、replaceAllを利用しない例を書いてみました。引数のListに存在する第二引数を第三引数に置換するとのメソッドです。ListのreplaceAllメソッドとの機能差が大き過ぎて代用品にはなり得ませんがCollectionsのreplaceAll機能の範囲で同じ処理を実装してみます。先ほどの「java.util.CollectionsのスタティックメソッドreplaceAllを利用した例」に相当する処理をListのreplaceAllメソッドを利用して実装してみます。コードコメントの通り、三項演算子を利用しているので少し分かりずらいかもしれませんが、ラムダ式だからこそできる処理です。targetList.size());assertTrue(targetList.contains("エービーシー"));assertFalse(targetList.contains("abc"));}JUnitのテストも成功しました。複雑な例の検証を追加してみます。リストの要素の文字列で、”a”または”A”から始まるものは”aから始まる”を先頭に付与する。それ以外の文字列は何もしない。追加処理は15行目からとなっております。targetList.get(5));}以上のようにCollections.replaceAllに比べると色々できます。removeIfメソッドJDK7以前には、これに対応するメソッドは存在していませんでした。普通にループを回して、条件に合う要素を除去するぐらいしかできません。targetList.get(3));}removeIfメソッドを利用して同じ処理を実装すると以下のようになります。targetList.get(3));}まとめこのように、java.util.Listに追加されたメソッドとラムダ式を併用することで、タイピングの数も減るし、コードがスッキリして読みやすくなると言えます。複雑なラムダ式を書いてしまうと逆に読みにくくなりますが、Listに対する実装が格段に楽になるパターンがある事は明らかですので、是非ご利用ください。eclipseとJUnitで確認する。World”アプリケーションの作成方法を説明する。「UIマップファイル」と言う仕組みが存在していることに言及させてい記事を読むEclipse(4.4)でJava言語のリファクタリング機能の使い方[「メソッド・シグニチャーの変更」と基本的な抽出処理、及び「インライン化」、「定数の抽出」]本エントリーでは、Eclipse(4.3)でJava言語のリファクタリング機能の使い方に引き続き記事を読むEclipseの使い方(Eclipse4.4のブックマーク機能とタスク機能)今回は、Eclipseのブックマーク機能とタスク機能の説明をさせていただきます。Eclipse[3:クラスに関する基礎知識(クラスとインスタンスとパッケージ)]Javaといえば、「オブジェクト指向」とのイメージがとっても強いですよね。コメントをキャンセルメールアドレスが公開されることはありません。(4.7.1)を利用してJUnit5の公式ガイドの内容を実践してみる。JUnit5が本格的に利用できる環境が整ってきました。eclipseとJUnitで確認する。Java、Eclipse、JUnitに関連した技術情報のブログです。