マーチン・ファウラー著リファクタリングの第1章のテストコードを作った

マーチン・ファウラー著のリファクタリングを読んでいるんだけど、第1章のサンプルコードに対するテストコードを作成したので公開する。
この本では、リファクタリングの前に、リファクタリング対象コードに対するテストコードを書けと書いてあるのに、ユニットテストの紹介は第4章で手短にしか説明していない。また、第1章のビデオレンタルシステムのサンプルコードのリファクタリングでは、テストコードが掲載されていなくて、テストコードなしでリファクタリングするのは怖いし、できない。そこで、第1章のサンプルコードに対するテストファイルを作成した。テスト項目をグループ分けしていなかったり、同じような記述をメソッド抽出していないけど、テストコードだからいいかと思う。テストコードはGitHubに上げたので、使いたい人がいたら、どうぞ。ただし、なるべくテスト対象コードを本の記述の通りに入力したつもりだが、ascii、html両フォーマットでのフッター行の期待する文字列が正しくなく、テストコードが動作しない場合があるかもしれない。その場合は、修正するので、Pull Requestを送って欲しい。なお、JUnitは4を使用し、Eclipseでmavenプロジェクトを作成し、サンプルコードを写経、テストコードを作成、テスト、リファクタリングを行った。pom.xmlファイルも同梱した。

https://github.com/andropenguin/testfiles_refactoring_chap01.git

リファクタリングRubyエディションの第1章のサンプルに対するテストコードは、以前、リファクタリングRubyエディションの第1章のテストコードを作ったで記事を書いた。

JUnit 4で、doubleのassertを行う

JUnit4でdoubleを返すメソッドのテストを行う場合、assertThat(is(actual, expected))では誤差でテスト失敗になることがあります。その場合、closeToを使います。closeToは、org.hamcrest.Matchersのクラスメソッドで、ライブラリを導入する必要があります。Eclipseで、mavenプロジェクトのPOMエディタでは、次のように設定をします。

POM設定画面

テストコードでは、

import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.Matchers.closeTo;
import static org.junit.Assert.*;

public class FooTest {
   ...
   @Test
   public void some_test() {
      ...
      assertThat(actual, is(closeTo(expected, delta)));
   }
}

と書きます。

Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroid公開再開の予定はなくなりました

先日お知らせしましたが、Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroidの公開を3/30に終了しました。理由は、4月から、ストリーミングを公開しているサイトが、会員登録とストリーミング再生時ログインを要求するようになったためです。ストリーミングを公開しているサイトの会員登録時の利用規約、マイ語学 利用規約を読んだところ、「第6条(禁止行為)」に「(8) IDとパスワードによる正規のログイン以外の方法で本サービスにアクセスし、またはアクセスを試みる行為」という記述があり、ツールによるファイルダウンロードが禁止されていると解釈できるので、本アプリの公開停止を継続します。アプリ公開再開の予定はありません。ご了承ください。
今までご利用ありがとうございました。