他人のブログを読んだり、勉強会等のLTを聴いて感じることこんにちは。他人のブログを読んでいたり、勉強会や某ABCに参加してLTとか聴いていて感じたことを書きます。お前のブログはオリジナリティがあるのか?既知の内容なのに、そういった内容をブログに書いている人をよく見かけます。参考サイトのリンクを張っていればまだ許せますが、そういったものがないブログもあります。本に載っていることを書いているブログも見かけます。最近見かけたのでは、iOSでのUITableViewの使い方とか。これはひどいと思いました。お前のブログは、どこかのサイトのページの翻訳ではないか?Androidに関して、キーワードで日本語サイトをググると、Googleのドキュメントリファレンスのページをほぼ翻訳したページを見かけることがあります。ブログを書いている本人は、日本人のために翻訳してあげているんだとか言いそうですが、ブログ中に出てくるサンプルコードも、元のドキュメントリファレンスのページと同じことが多々あります。真っ先に日本語に訳して、日本で最先端を行っているとでも思っているのでしょうか。技術的にとんがりたいなら、自分で作ったサンプルアプリのコードでも載せて欲しいですね。最近見かけたブログでは、英語圏のブログのほぼ翻訳で、コード断片もコピペで、元のコードの、作者独自定義の定数を、定義もせずに(定義を引用もせずに)使用している例がありました。元の英語圏のブログでは、githubにサンプルコードがあったので、定数の定義を見ることができましたが、翻訳サイトでは、githubへのリンクは張られていませんでした。勉強会や某ABCのLTで笑いを取ることしかしない勉強会や某ABCに参加してLTを聞いていると、次のようなことがあります。アニメの画像をスライドに入れる。奇声を上げて笑いをとろうとする勉強会では見かけないですが、某ABCのLTではよく見かけます。ビジネス、技術アピールで注目を浴びるようにして下さい。某ABCのLTで、当時流行っていた某ゲームアプリを、某テストツールで動かすことをやったLTがありました。言って、技術的に面白くないです。自分のプロダクトをテストツールで動かすのならいいですが、そうでないなら、単に笑いを取るだけの内容ですね。2.14.6では書き換える必要があります。Rubyにおけるモック、スタブについては自分は初心者なので、試行錯誤して、書き換えてみました。最後のテストの部分は、本によると、失敗するはずなのですが、なぜか通ってしまいます。この点は理解不足なので、保留にします。コードは、GitHubにおいてあります。4向けの記事を読んでいます。installでエラーになります。うまくいくGemfileを示します。RSpecによるRailsテスト入門という電子書籍を読んで、RSpecでテストコードを書くことに取り組んでいます。Rails改訂新板のサンプルアプリにRSpecでテストコードを書きました。Memberクラスは、次のようなバリデーションがあります。gemを使って、テストデータを生成しました。endendこの場合、テストコードを書くと、英語環境ではテストは失敗しません。ところが、i18nで国際化して、日本語環境でテストすると、fakerは国際化に対応しているようで、nameが日本語になったり、emailが不正な表現になって失敗するようになります。バリデーションでは、nameは英字で始まり、英数字からならないとダメだからです。full_nameについては、日本語のデータが生成されるようにしたいです。ロケールをスイッチできるようです。そこで、次のファイルを使ってテストデータを生成するようにしました。ロケールをスイッチすると、その後は設定したロケールのままになると期待したのですが、そのようにはならないようで、各フィールドごとにロケールをスイッチしないとダメでした。このテストデータを使用すると、テストが通るようになりました。2013年8月6日Jenkins+maven+Sonarを動かすのに役立ったサイトリストここ数日、IntelliJでAndroidアプリのテスト付きmavenプロジェクトを作り、Jenkinsでビルド、テスト、静的解析をする方法を研究していました。Jenkinsとmaven、Sonarを組み合わせる方法は、ググっても、古い情報が引っかかることが多く、苦労しました。以下に、役立ったサイトのリストをあげます。折を見て、方法を紹介する記事を書きたいと思います。2013年4月7日マーチン・ファウラー著リファクタリングの第1章のテストコードを作ったマーチン・ファウラー著のリファクタリングを読んでいるんだけど、第1章のサンプルコードに対するテストコードを作成したので公開する。この本では、リファクタリングの前に、リファクタリング対象コードに対するテストコードを書けと書いてあるのに、ユニットテストの紹介は第4章で手短にしか説明していない。第1章のビデオレンタルシステムのサンプルコードのリファクタリングでは、テストコードが掲載されていなくて、テストコードなしでリファクタリングするのは怖いし、できない。そこで、第1章のサンプルコードに対するテストファイルを作成した。テスト項目をグループ分けしていなかったり、同じような記述をメソッド抽出していないけど、テストコードだからいいかと思う。テストコードはGitHubに上げたので、使いたい人がいたら、どうぞ。テスト対象コードを本の記述の通りに入力したつもりだが、ascii、html両フォーマットでのフッター行の期待する文字列が正しくなく、テストコードが動作しない場合があるかもしれない。Requestを送って欲しい。JUnitは4を使用し、Eclipseでmavenプロジェクトを作成し、サンプルコードを写経、テストコードを作成、テスト、リファクタリングを行った。pom.xmlファイルも同梱した。https://github.com/andropenguin/testfiles_refactoring_chap01.gitリファクタリングRubyエディションの第1章のサンプルに対するテストコードは、以前、リファクタリングRubyエディションの第1章のテストコードを作ったで記事を書いた。expected))では誤差でテスト失敗になることがあります。その場合、closeToを使います。closeToは、org.hamcrest.Matchersのクラスメソッドで、ライブラリを導入する必要があります。Eclipseで、mavenプロジェクトのPOMエディタでは、次のように設定をします。2013年3月31日JUnit実践入門を読んで:コード補足その2渡辺修司さん著の「JUnit実践入門」を読んで、自分なりに考えたテストコードを書きます。外部システムに依存するテスト本では、mockitoを利用していましたが、私は、ExternalResourceを使って、getInputメソッドで、ファイルのInputStreamを返す方法をとりました。src/test/resources/ch20/ex03に配置されます。2013年3月31日JUnit実践入門を読んで:コード補足その1渡辺修司さん著の「JUnit実践入門」を読んで、写経して、コードが本に載っていなかったり、ダウンロードしたサンプルに入っていなかったりしたので、自分なりに考えて補足しました。システムに依存するテストリスト20.3に対するテストコードがないので、下記に記します。テスト対象コードのクラス名はMonthlyCalendar2とします。テストコードでは、MonthlyCalendar2を継承する無名クラスで、geCalendarメソッドをオーバーライドします。cal;}}リスト20.4のテストコードを作って、テストをしようとしましたが、リスト20.4のコードだと、私はテストコードが書けませんでした。修正したテスト対象コードは次のようになりました。Calendar.getInstance();}}そして、テストコードは、下記のようになりました。テストで制御できない処理を別のクラスに移譲するのですが、その移譲クラスでgetRemainingDaysメソッドを実装しました。6.17のテストコード今、リファクタリングRubyエディションを読んでいます。テストコードが載っていないし、コードを補わないと動かなかったり、擬似コードで動かないコードが載っていたりして、ストレスマッハです。Definition)のテストコードが書けたので、記事にします。:successendとなっていますが、stateはクラス変数で、アクセサを定義する必要があります。クラス変数のゲッタによると、クラス変数に対しては、attrなんとかでアクセサを定義することはできないそうなので、コードを書いて定義しました。リファクタリング対象コードは、次のようになります。:successendendこれに対するテストコードは次のようになります。あと、この節のサンプル:def_eachを使って類似メソッドを定義するで、def_eachメソッドを定義するClassクラスは記述されているんですが、プロダクションコードでどう使うのか書かれていないので、補います。これは、Module#define_methodを抽象化する話を参考にさせていただきました。