https://github.com/scalaprops/scalaprops *1
モチベーションとか作成途中の話は以前少し書いた。
その他いろいろ現状までの成果や今後やりたいことを簡単に
- 名前は(開発中は仮にscalazcheckにしていましたが) scalaprops にしました
- Genのモナドトランスフォーマーはまだ実装してません
- タイムアウトや、テスト結果の表示あたりが、色々微妙な部分あるので改善したい(scalaz-stream使いたい?)
- 進捗をtree上に表示する都合上、並列にテストできません(正確には不可能ではないが、結果表示がとても残念になって見れなかったり、タイムアウトが増える)
- それ以外の大体は実装できた
具体的なsbtでのセットアップ方法はgithubのREADME見てください。
使い方は、 scalaprops/src/test/scala/scalaprops/ のディレクトリの下のテストみてもらうとわかると思います。
今のところ
- valやdefでscalaprops.Propertiesまたはscalaprops.Property型を返すものを定義
その際、必ず"test"というメソッド名、フィールド名で始まる必要があるその規約で始まるもののみがテストされるそうでないものはProperties型だとしてもテストされない
"test"から始まらないといけない制約はなくなりました
ここから下はモジュール構成について簡単に説明。
scalaprops-coreとscalapropsとscalaprops-scalazlawsという3つのモジュールに分けた
- scalaprops-core*2
- scalaprops
- sbtのtest-interfaceと、scalaz-concurrentに依存
- これに依存させないとsbtでテストできないので、実質必須というか、coreだけ使うことはあまりない
- scalaprops-scalazlaws
- scalazのtypeclassのlawのテストをする場合に使うやつ
- 逆にそうでない場合は使わない
- つまりscalaz-scalacheck-bindingのScalazProperties.scalaに相当するようなもの
大体開発2ヶ月くらいかかったらしい。
その他色々解説すべきことあったはずだけれど、気が向いたら書くかもしれない 勉強会でで発表したスライド