Java

GitHub + Travis CI + CoverallsでJavaプログラムのカバレッジ計測をする方法

Travis CIとCoverallsを使って、GitHubに公開しているJavaプログラムのカバレッジを測定する方法を以下に記載する(Mavenで管理されたJavaプロジェクトを想定)。Travis CIとCoverallsの連携にはCoverallsの公式ページ(以下)で紹介されているcoveralls-mav…

MockitoのArgumentMatcherの使い方

http://docs.mockito.googlecode.com/hg/latest/org/mockito/ArgumentMatcher.htmlを見ると、このクラスを使って以下のように、IsListOfTwoElementsクラスのような独自のArgument Matcherを作る事が出来る。 class IsListOfTwoElements extends ArgumentMatc…

System.out.printとかSystem.exitとかのユニットテストを補助してくれるルールを試してみる

System.out.printlnとかSystem.exitをテストするのはちょっと面倒なのだが、その辺りを補助してくれるJUnitのルールのコレクション(System Rules)があったので試してみた。 【事前準備】 System Rulesを使うにはApache Commons IOが必要という事でダウンロ…

MockitoのMatchers.anyObject()の使い方

MockitoのMatchers.anyObject()は以下のmethodA()のように、あるオブジェクトを引数に持つメソッドが呼び出されたかどうかを、Mockitoで検証する際等に使うことが出来る。 public class MyClass { private MyField field; public void setField(MyField fiel…

Mockitoでprivateなフィールドをモック化する方法

以下のようにprivateなフィールドをモック化する場合、リフレクションを使うと出来るのだが、Mockitoにはそのリフレクションを簡単に使えるWhiteboxというユーティリティクラスがある。 public class MyClass { private final MyField field = new MyField()…

Google App EngineがJavaに対応したので早速試してみた

「米グーグルの「Google App Engine」、Javaアプリケーションが利用可能に | 日経 xTECH(クロステック)」と言うことで、Googleのチュートリアル(http://code.google.com/intl/en/appengine/docs/java/gettingstarted/)に沿って早速試してみた。なお、チ…

Livedoorのお天気WebサービスをJavaで使う

Livedoorのお天気Webサービス(REST)をJavaアプリケーションから利用する場合、以下のようなコードになる*1 *2 *3。 import java.net.HttpURLConnection; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; import jav…

MalformedByteSequenceExceptionが出る理由

javax.xml.parsers.DocumentBuilderを利用して、XMLドキュメントを処理しようとした際、下記のコードの3行目でMalformedByteSequenceExceptionという例外が発生した。 1: DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); 2: Docu…

Genericsを使用したコレクション・クラスのソート

Listなどのコレクション・クラスをソートする場合、java.util.Collectionsクラスのsort()メソッドを利用すると便利である(配列の場合java.util.Arraysを使用)。例えばAnimalというクラスのリストをソートする場合、以下のようなコードになる*1。 import ja…

JAVAメモ

PATH環境変数にJAVAのbinディレクトリを追加していないのに、何故コマンドプロンプトからフルパスで指定しなくてもjava.exeが実行出来るのか不思議だったのだが、良く見るとC:\Windows\system32配下にjava.exeがコピーされていた。 そこで、PATHを追加しなく…