jcunit's blog

JCUnitの開発日誌(ログ)です。"その時点での"JCUnit作者の理解や考え、開発状況を日本語で書きます。

JCUnitのリファイン(0.3.0)リリース

JCUnitの設計をリファインし、機能を根本的なものに限った0.3.0をリリースした。
今回は「制約」を取り扱うための機能を実装した。
また、Annotationの役割・用語を整理した。
MavenのCoordinateは以下のとおり。

<dependency>
<groupId>com.github.dakusui</groupId>
<artifactId>jcunit</artifactId>
<version>[0.3.0,]</version>
</dependency>

以前のバージョンとの互換性は無いので注意して欲しい。
詳しくはREADME.mdに書いてあるので読んでみてほしい。

https://github.com/dakusui/jcunit/blob/develop/README.md(英語)

内部の設計を見直した結果、ロジックが首尾一貫した結果、生成するテスト件数を最適化することができたようだ。

benchmark1_3$4 :(testcases, remainders, time(sec))=( 9, 0, 0.000000)
benchmark2_3$13 :(testcases, remainders, time(sec))=( 20, 0, 0.028000)
benchmark3_4$15_3$17_2$20 :(testcases, remainders, time(sec))=( 43, 0, 4.591000)
benchmark4_4$1_3$30_2$35 :(testcases, remainders, time(sec))=( 29, 0, 7.428000)
benchmark5_2$100 :(testcases, remainders, time(sec))=( 18, 0, 23.120000)
benchmark6_10$20 :(testcases, remainders, time(sec))=( 248, 0, 2.870000)

以前(http://jcunit.hatenablog.jp/entries/2014/03/15)の生成結果と比較すると、(3)を除いてすべての項目で生成テスト件数の改善が見られる。
一方、処理時間は長くなっている。これは設計の改善によってオブジェクトの生成が増えたことによるのだろう(整数で識別していた因子をオブジェクトで表現したりなど)。とはいえ、実用の範囲と言えるかな。経験が不足しているので確かなことは言えないが。