日々常々

ふつうのプログラマがあたりまえにしたいこと。

#jjug_ccc 2016 FallでJUnit5の話をしてきた

今年の目標を「1ヶ月に1エントリ以上のペースでブログを書く」にします。 これで9エントリになるので後3ですね。2012年12月は1ヶ月で34エントリ書いてるので、今の私と彼が同一人物なら余裕なはず。

さて、2016-12-03のJJUG CCC 2016 Fallで話させてもらいました。 タイトルはどうしようJUnit 5です。

JJUG CCCについて

参加は6回目だと思ってたけど、7回目だった。どんどんパワフルになっている良いイベント。いい機会をいただけています。ありがとうございます。

資料

準備段階における言い訳をしてみる

1週間前からここ数年無い程度の体調不良に襲われ、滅多に仕事を休んだりしないのですが、2日間お休みしてしまったりしていました。当日は発表前に咳止めを飲んでたり。 あと、11/30にJUnit5.0.0-M3がリリースされて、いろいろと修正が必要になってたりもしてます。junit-jupiter-migration-supportとかM2にはなかったし。まあ準備できてないのはそれだけが理由じゃ無いんだけど。

そんなわけで、お聞き苦しいところもあったかと思いますが、恥じる内容では無いつもりです。

登壇のふりかえり

時間は過不足なく残り30秒程度で終えたはず。時間配分はなんとかなった。 エモ系セッションが多い私ですが、今回はテク系でやろうと思ってやりました。

感想。技術セッションは難しいなーと改めて思いました。

登壇前は「機能の単純な説明はしない。ユーザーガイドを読んでもらった方がいい。」と思ってたのですが、聞いて頂いている方々の反応を見て、機能説明の比重を増やして話しました。合ってたかどうかは知らない。

しかし長丁場のイベントで、単に知識を入れるようなセッションは負荷も大きいんだろうなと。 時間帯や私の話し方(飲み物忘れたのと風邪とで声が出づらかった・・・・・)もあったと思いますが、前回よりお疲れな方が多いように感じました。人数が多かったのもあって、室温も少し高かったのかな。

あと、デモは入れた方がよかったです。目先も変わるし。

今回は時間配分的に入れられなかったけど。

結局JUnit5はどうなんよ?

発表駆動で触っただけですが、私は気に入りました。聞いた方がどうとらえたかは知りません。 リリースされたら即使うと思います。楽しみです。

蛇足: JUnit5開発にあたっては寄付金が募集されたことがあって、キャンペーンページに名前載せてもらってたりする。

宣伝

スライドの中で触れてるAssertJの記事はWEB+DB PRESS Vol.95で書いてます!!

WEB+DB PRESS Vol.95

WEB+DB PRESS Vol.95

JaCoCoとMavenと何か

JaCoCoMavenカバレッジを取ろうってやつ。

  • Java: 1.8.0_102
  • Maven: 3.3.9
  • JaCoCo: 0.7.6.201602180812

いろいろ地味に古いけど気にしない。

普通の手順

設定

丁寧な解説ありますけど、もっと雑なの。

pom.xmlproject/build/pluginsに入れるだけ。

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.7.6.201602180812</version>
</plugin>

別に入れなくてもいいけど、このくらいは書いた方が楽。

実行

mvn clean jacoco:prepare-agent test

面倒ならexecutionに書く。手順は公式の丁寧な解説を参照。

結果を見る

HTMLで手元で見たいなら jacoco:report を実行する。 そしたら target/site/jacoco/index.xml ができる。

Jenkinsにはjacoco.execを直接見てもらえば、jacoco:reportは不要。

うまくいかない

testフェーズを実行してもjacoco.execができなくて、jacoco:reportしてたらこんなのが出てたりするとき。

[INFO] --- jacoco-maven-plugin:0.7.6.201602180812:report (default-report) @ xxxxxxxxxxxxxx ---
[INFO] Skipping JaCoCo execution due to missing execution data file:/xxxxxxxxxxxxxx/target/jacoco.exec

たぶんmaven-surefire-pluginになんか設定入ってる。

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19.1</version>
  <configuration>
    <argLine>-Xms128m</argLine>
  </configuration>
</plugin>

こっちで書いてると、jacoco:prepare-agentで設定したargLineが上書きされてしまう。 なので@{argLine}で参照しておく。

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19.1</version>
  <configuration>
    <argLine>@{argLine} -Xms128m</argLine>
  </configuration>
</plugin>

だいたいはjacoco:prepare-agentのドキュメントとかに書いてたりするのだけれどね。

「Javaの新定石」でJava EEについて書きました(WEB+DB PRESS vol.94)

WEB+DB PRESS Vol.94

WEB+DB PRESS Vol.94

テーマは最近何かと話題の多いJava EEです。 かんたんなWebアプリをかんたんに作って、そこで使った技術要素を8ページで紹介する試み。 ギリギリまでSpring BootにするかJava EEにするか迷いました。

メインはJAX-RSCDIJPAです。当然ほかの仕様*1も使っていますが、UberJarで使っているPayara Micro以外はJava EE仕様の範囲でやっています。 アプリ自体はシンプルなものなので、ハンズオン的にできなくはないものだとも思っています。 コードのダウンロードもできますので、そちらもどうぞ。

Java EEと言えば、パーフェクト Java EEも出たところですね。 連載で「Java EEもいけるんじゃない?」と思ったら、手を出してみてもいいのではないでしょうか。(わたしもこれからよみます。)

パーフェクト Java EE

パーフェクト Java EE

*1:たとえばJSPServletJTAなど