多くの人は忘れてるCoinの一つ
Java SE 7がリリースされたのは2011年7月。 さらに、パブリックアップデートが2015年4月で終了している子です。 5年も経てば一定の評価はできるでしょう。
さて、以下のコードをコンパイルしたらどうなるか。
void method() { try { throw new Exception(); } catch(Exception e) { throw e; } }
では次のコードは。
void method() { try { throw new RuntimeException(); } catch(Exception e) { throw e; } }
うん。
Project Coinの "Multi-catch and more precise rethrow" ですね。マルチキャッチの影に隠れてるから余計に目立たない。 Project Coinって言ったり、こうして書いてあることから思い当たったりする程度かと思います。 知らなかったり忘れてても問題ないものでしょう。
この機能、一度も使わなかったなぁ……。多分今後も使わない。
発端
java.lang.Exception でキャッチしたブロックの中からそれそのまま throw したときって、throws Exception 付くっけ?
— 田中ひさてる (@tanakahisateru) 2016年12月6日
このツイートで思い出した。で、こんなリプしたので
@tanakahisateru 必要ですねー。例外もありますけど、その話じゃ無いでしょうし。
— いろふ (@irof) 2016年12月6日
その「例外」の話、です。
#jjug_ccc 2016 FallでJUnit5の話をしてきた
今年の目標を「1ヶ月に1エントリ以上のペースでブログを書く」にします。 これで9エントリになるので後3ですね。2012年12月は1ヶ月で34エントリ書いてるので、今の私と彼が同一人物なら余裕なはず。
さて、2016-12-03のJJUG CCC 2016 Fallで話させてもらいました。 タイトルはどうしようJUnit 5です。
JJUG CCCについて
- 2011 Spring 参加: ブログ
- 2013 Spring 参加: ブログ
- 2013 Fall 不参加: キャンセルしちゃってる
- 2014 Spring 不参加: 1日寝てたっぽい。たぶんJavaDayTokyo2015で燃え尽きてた。
- 2014 Fall 参加
- 2015 Spring 参加
- 2015 Fall 参加: よくある業務開発の自動化事情
- 2016 Spring 参加: テスト自動化のまわりみち(資料非公開)
- 2016 Fall 参加: どうしようJUnit 5 ←今回
参加は6回目だと思ってたけど、7回目だった。どんどんパワフルになっている良いイベント。いい機会をいただけています。ありがとうございます。
資料
準備段階における言い訳をしてみる
1週間前からここ数年無い程度の体調不良に襲われ、滅多に仕事を休んだりしないのですが、2日間お休みしてしまったりしていました。当日は発表前に咳止めを飲んでたり。 あと、11/30にJUnit5.0.0-M3がリリースされて、いろいろと修正が必要になってたりもしてます。junit-jupiter-migration-supportとかM2にはなかったし。まあ準備できてないのはそれだけが理由じゃ無いんだけど。
そんなわけで、お聞き苦しいところもあったかと思いますが、恥じる内容では無いつもりです。
登壇のふりかえり
時間は過不足なく残り30秒程度で終えたはず。時間配分はなんとかなった。 エモ系セッションが多い私ですが、今回はテク系でやろうと思ってやりました。
感想。技術セッションは難しいなーと改めて思いました。
登壇前は「機能の単純な説明はしない。ユーザーガイドを読んでもらった方がいい。」と思ってたのですが、聞いて頂いている方々の反応を見て、機能説明の比重を増やして話しました。合ってたかどうかは知らない。
しかし長丁場のイベントで、単に知識を入れるようなセッションは負荷も大きいんだろうなと。 時間帯や私の話し方(飲み物忘れたのと風邪とで声が出づらかった・・・・・)もあったと思いますが、前回よりお疲れな方が多いように感じました。人数が多かったのもあって、室温も少し高かったのかな。
あと、デモは入れた方がよかったです。目先も変わるし。
次機会あったらデモかライブコーディングか入れたいなー。そっちの準備もしてはいたんだけど、時間が捻出できなかった。
— いろふ (@irof) 2016年12月3日
今回は時間配分的に入れられなかったけど。
結局JUnit5はどうなんよ?
発表駆動で触っただけですが、私は気に入りました。聞いた方がどうとらえたかは知りません。 リリースされたら即使うと思います。楽しみです。
蛇足: JUnit5開発にあたっては寄付金が募集されたことがあって、キャンペーンページに名前載せてもらってたりする。
宣伝
スライドの中で触れてるAssertJの記事はWEB+DB PRESS Vol.95で書いてます!!
- 作者: 小出淳子,黒澤剛志,牧大輔,横江亮佑,山口貴也,尾藤正人,佐藤琢哉,中橋研太郎,田中慎司,小西裕介,伊藤直也,稲富駿,前島真一,長野雅広,山際康貴,のざきひろふみ,うらがみ,岡林大,遠藤雅伸,ひげぽん,海野弘成,はまちや2,竹原,大場寧子,大場光一郎,野々下裕子,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2016/10/22
- メディア: 大型本
- この商品を含むブログを見る
JaCoCoとMavenと何か
いろいろ地味に古いけど気にしない。
普通の手順
設定
丁寧な解説ありますけど、もっと雑なの。
pom.xml
のproject/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
のドキュメントとかに書いてたりするのだけれどね。