Ion-induced effects in GEM & GEM/MHSP - gaseous photomultipliers
RSpecPiccolo gem
-
Upload
tbpgr -
Category
Technology
-
view
303 -
download
7
description
Transcript of RSpecPiccolo gem
![Page 1: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/1.jpg)
RSpecPiccolo GemRSpecPiccolo Gem についてについて
Presented by @tbpgr
![Page 2: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/2.jpg)
目次目次● エレベーターピッチ● ケース 1 インスタンスメソッドのテスト● ケース 2 クラスメソッドのテスト● ケース 3 プロダクトコードのひな形も同時に作成● 導入方法● 得したこと
![Page 3: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/3.jpg)
エレベーターピッチエレベーターピッチ
![Page 4: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/4.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?
![Page 5: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/5.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい
![Page 6: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/6.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの
![Page 7: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/7.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は
![Page 8: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/8.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです
![Page 9: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/9.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき
![Page 10: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/10.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき● 手動作成と違って
![Page 11: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/11.jpg)
エレベーターピッチエレベーターピッチ● RSpecPiccolo って何?● テストを楽に作りたい● Ruby 開発者向けの● RSpecPiccolo という gem は● テストコード生成ツールです● これはパラメータ化テストのテンプレートを出力でき● 手動作成と違って● ボイラーテンプレートの出力機能が備わっている
![Page 12: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/12.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
![Page 13: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/13.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● コンソールで piccolo コマンドを実行
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名(必要な数分)
piccolo e Hoge::Core hoge_core hoge hige hage
![Page 14: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/14.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● 出力結果は・・・
![Page 15: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/15.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● require,テストケースのリスト部● describe はモジュール名+クラス名。 contextはメソッド名が自動で設定されている● テストケースは 1ケース 1ハッシュで管理。必要なパラメータは手動で追加
![Page 16: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/16.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● テスト本体はテストケースのリスト分ループする構造になっている● 1つのメソッドは1つのテストケースで管理する● case_before, base_afterはcaseごとの初期化・終了処理● context全体の初期化、終了はRSpecのbefore,afterを利用すればよい● テストに必要となるインスタンスの取得、メソッドの実行、検証コードのひな形が予め出力されている
![Page 17: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/17.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト● case_before にケースごとの初期化処理を記述● case_after にケースごとの終了処理を記述
![Page 18: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/18.jpg)
ケースケース 1 1 インスタンスメソッドのテストインスタンスメソッドのテスト
● 同様の構造でメソッド数分テストコードが生成されている
![Page 19: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/19.jpg)
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
![Page 20: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/20.jpg)
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
● コンソールで piccolo コマンドを実行。
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名+ @c (必要な数分)
● インスタンスメソッドとの併用も可能
piccolo e Hoge::Core hoge_core hoge@c
![Page 21: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/21.jpg)
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト
● 出力結果は・・・
![Page 22: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/22.jpg)
ケースケース 2 2 クラスメソッドのテストクラスメソッドのテスト● インスタンスメソッドと同じ出力内容の箇所は説明省略
● インスタンスの取得の代わりにクラスメソッドを直接呼び出すコードが生成されている。
![Page 23: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/23.jpg)
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
![Page 24: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/24.jpg)
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
● コンソールで piccolo コマンドを実行。
● 第 1 引数はモジュール名+クラス名
● 第 2 引数はファイル名
● 第 3 引数以降はメソッド名または属性
※ クラスメソッドは @c, 属性は @f で指定可能
● 属性はコンストラクタからの値設定コードつき
piccolo e Hoge::Core hoge_core class_method@c instance_method attr1@f attr2@f -p
![Page 25: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/25.jpg)
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成
● 出力結果は・・・
![Page 26: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/26.jpg)
ケースケース 33 プロダクトコードのひな形も同時に作成プロダクトコードのひな形も同時に作成● テストコードについては説明省略
● プロダクトコードのひな形が lib 配下に出力される
● attr_accessor_init は TbpgrUtils gem で提供しているフィールド定義+ initialize 定義を一括で行うクラスマクロ。 AttributesInitializable を include することで利用可能。
![Page 27: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/27.jpg)
導入導入● Bundler 利用時
Gemfile に『 gem 'rspec_piccolo' 』を記述して bundle を実行● gem install 利用時
gem install rspec_piccolo を実行● その他、より詳細な利用方法については GitHub 参照
https://github.com/tbpgr/rspec_piccolo
Gem については下記参照
http://rubygems.org/gems/rspec_piccolo
![Page 28: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/28.jpg)
補足補足● もし生成されるコードの設計や記法等が好みではない場合は、アイデアだけ流用して自分好み
の RSpecPiccolo 代替 gemを作成・公開してはいかがでしょうか?● Piccolo はピッ○ロ大○王のイメージです。
「ポコペンポコペンダーレガツツイタ・・・う、うごっ。」と魔族の卵のごとくテストコードを生成しているイメージ。
● 俺は MiniTest派だ、という方はぜひ MiniTestMajunior gem を。● Ruby使い以外の方も同様の観点でツールを作成してみるのはいかがでしょうか?私はJavaの
プロジェクトで RSpecPiccolo のJUnit版とも言えるツールを作成して実プロジェクトで活用したことがあります。
当時はJavaの CLIツールとして作成しましたが、もし今作るなら Groovyで Gradleのタスクとして作るだろうと思います。必要にかられていないので作りませんけど。
![Page 29: RSpecPiccolo gem](https://reader034.fdocuments.in/reader034/viewer/2022052412/559222481a28abc5068b45f0/html5/thumbnails/29.jpg)
Thank you!!Thank you!!
● Author: @tbpgr● Twitter: @tbpgr● Blog: http://d.hatena.ne.jp/tbpg/● GitHub: https://github.com/tbpgr● RubyGems: http://rubygems.org/profiles/tbpgr