SlideShare a Scribd company logo
1 of 29
Download to read offline
RSpecPiccolo Gem について

Presented by @tbpgr
目次
●

エレベーターピッチ

●

ケース 1 インスタンスメソッドのテスト

●

ケース 2 クラスメソッドのテスト

●

ケース 3 プロダクトコードのひな形も同時に作成

●

導入方法

●

得したこと
エレベーターピッチ
エレベーターピッチ
●

RSpecPiccolo って何?
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの

●

RSpecPiccolo という gem は
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの

●

RSpecPiccolo という gem は

●

テストコード生成ツールです
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの

●

RSpecPiccolo という gem は

●

テストコード生成ツールです

●

これはパラメータ化テストのテンプレートを出力でき
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの

●

RSpecPiccolo という gem は

●

テストコード生成ツールです

●

これはパラメータ化テストのテンプレートを出力でき

●

手動作成と違って
エレベーターピッチ
●

RSpecPiccolo って何?

●

テストを楽に作りたい

●

Ruby 開発者向けの

●

RSpecPiccolo という gem は

●

テストコード生成ツールです

●

これはパラメータ化テストのテンプレートを出力でき

●

手動作成と違って

●

ボイラーテンプレートの出力機能が備わっている
ケース 1 インスタンスメソッドのテスト
ケース 1 インスタンスメソッドのテスト
●

コンソールで piccolo コマンドを実行

●

第 1 引数はモジュール名+クラス名

●

第 2 引数はファイル名

●

第 3 引数以降はメソッド名(必要な数分)

piccolo e Hoge::Core hoge_core hoge hige hage
ケース 1 インスタンスメソッドのテスト
●

出力結果は・・・
ケース 1 インスタンスメソッドのテスト
●

require, テストケースのリスト部

●

describe はモジュール名+クラス名。 context はメソッド名が自動で設定されている

●

テストケースは 1 ケース 1 ハッシュで管理。必要なパラメータは手動で追加
ケース 1 インスタンスメソッドのテスト
●

テスト本体はテストケースのリスト分ループする構造になっている

●

1 つのメソッドは 1 つのテストケースで管理する

●

case_before, base_after は case ごとの初期化・終了処理

●

context 全体の初期化、終了は RSpec の before,after を利用すればよい

●

テストに必要となるインスタンスの取得、メソッドの実行、検証コードのひな形が予め出力されている
ケース 1 インスタンスメソッドのテスト
●

case_before にケースごとの初期化処理を記述

●

case_after にケースごとの終了処理を記述
ケース 1 インスタンスメソッドのテスト
●

同様の構造でメソッド数分テストコードが生成されている
ケース 2 クラスメソッドのテスト
ケース 2 クラスメソッドのテスト
●

コンソールで piccolo コマンドを実行。

●

第 1 引数はモジュール名+クラス名

●

第 2 引数はファイル名

●

第 3 引数以降はメソッド名+ @c (必要な数分)

●

インスタンスメソッドとの併用も可能

piccolo e Hoge::Core hoge_core hoge@c
ケース 2 クラスメソッドのテスト
●

出力結果は・・・
ケース 2 クラスメソッドのテスト
●

●

インスタンスメソッドと同じ出力内容の箇所は説明省略
インスタンスの取得の代わりにクラスメソッドを直接呼び出すコードが
生成されている。
ケース 3 プロダクトコードのひな形も同時に作成
ケース 3 プロダクトコードのひな形も同時に作成
●

コンソールで piccolo コマンドを実行。

●

第 1 引数はモジュール名+クラス名

●

第 2 引数はファイル名

●

第 3 引数以降はメソッド名または属性
※ クラスメソッドは @c, 属性は @f で指定可能

●

属性はコンストラクタからの値設定コードつき
piccolo e Hoge::Core hoge_core class_method@c instance_method attr1@f attr2@f -p
ケース 3 プロダクトコードのひな形も同時に作成
●

出力結果は・・・
ケース 3 プロダクトコードのひな形も同時に作成
●

テストコードについては説明省略

●

プロダクトコードのひな形が lib 配下に出力される

●

attr_accessor_init は TbpgrUtils gem で提供しているフィールド定義+ initialize 定義を一括で行う
クラスマクロ。 AttributesInitializable を include することで利用可能。
導入
●

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
補足
●

●

もし生成されるコードの設計や記法等が好みではない場合は、アイデアだけ流用して自分好み
の RSpecPiccolo 代替 gem を作成・公開してはいかがでしょうか?
Piccolo はピッ○ロ大○王のイメージです。

「ポコペンポコペンダーレガツツイタ・・・う、うごっ。」と魔族の卵のごとくテストコード
を生成しているイメージ。
●

俺は MiniTest 派だ、という方はぜひ MiniTestMajunior gem を。

●

Ruby 使い以外の方も同様の観点でツールを作成してみるのはいかがでしょうか?私は Java の

プロジェクトで RSpecPiccolo の JUnit 版とも言えるツールを作成して実プロジェクトで活用し
たことがあります。
当時は Java の CLI ツールとして作成しましたが、もし今作るなら Groovy で Gradle のタスクと
して作るだろうと思います。必要にかられていないので作りませんけど。
Thank you!!
●

Author : @tbpgr

●

Twitter : @tbpgr

●

Blog : http://d.hatena.ne.jp/tbpg/

●

GitHub : https://github.com/tbpgr

●

RubyGems : http://rubygems.org/profiles/tbpgr

More Related Content

Viewers also liked

SublimeSunippetter gem
SublimeSunippetter gemSublimeSunippetter gem
SublimeSunippetter gemtbpgr
 
Mr beans christmas
Mr beans christmasMr beans christmas
Mr beans christmasnicodex
 
Tuesday night owl! 1.21
Tuesday night owl! 1.21Tuesday night owl! 1.21
Tuesday night owl! 1.21mrsbubba33
 
Engineering project management
Engineering project managementEngineering project management
Engineering project managementGautam Shah
 
fine arts eight women possesorஎண்வகைத் தலைவிகள்
 fine arts  eight women possesorஎண்வகைத் தலைவிகள் fine arts  eight women possesorஎண்வகைத் தலைவிகள்
fine arts eight women possesorஎண்வகைத் தலைவிகள்Dinojan Sivanandarajah
 
Corporate presentation (april 2014)
Corporate presentation (april 2014)Corporate presentation (april 2014)
Corporate presentation (april 2014)oncolyticsinc
 
A PROJECT REPORT ON “ALKYL ARYL SULFONATE”
A PROJECT REPORT  ON  “ALKYL ARYL SULFONATE”A PROJECT REPORT  ON  “ALKYL ARYL SULFONATE”
A PROJECT REPORT ON “ALKYL ARYL SULFONATE”Ashish Kavaiya
 
Corporate presentation-(september-2015-corrected)
Corporate presentation-(september-2015-corrected)Corporate presentation-(september-2015-corrected)
Corporate presentation-(september-2015-corrected)oncolyticsinc
 
May 2016 Corporate Presentation
May 2016 Corporate PresentationMay 2016 Corporate Presentation
May 2016 Corporate Presentationoncolyticsinc
 

Viewers also liked (16)

SublimeSunippetter gem
SublimeSunippetter gemSublimeSunippetter gem
SublimeSunippetter gem
 
Chukwuma gwude
Chukwuma gwudeChukwuma gwude
Chukwuma gwude
 
Mr beans christmas
Mr beans christmasMr beans christmas
Mr beans christmas
 
Grammar1
Grammar1Grammar1
Grammar1
 
Tuesday night owl! 1.21
Tuesday night owl! 1.21Tuesday night owl! 1.21
Tuesday night owl! 1.21
 
Engineering project management
Engineering project managementEngineering project management
Engineering project management
 
fine arts eight women possesorஎண்வகைத் தலைவிகள்
 fine arts  eight women possesorஎண்வகைத் தலைவிகள் fine arts  eight women possesorஎண்வகைத் தலைவிகள்
fine arts eight women possesorஎண்வகைத் தலைவிகள்
 
Evaluation one
Evaluation oneEvaluation one
Evaluation one
 
Corporate presentation (april 2014)
Corporate presentation (april 2014)Corporate presentation (april 2014)
Corporate presentation (april 2014)
 
A PROJECT REPORT ON “ALKYL ARYL SULFONATE”
A PROJECT REPORT  ON  “ALKYL ARYL SULFONATE”A PROJECT REPORT  ON  “ALKYL ARYL SULFONATE”
A PROJECT REPORT ON “ALKYL ARYL SULFONATE”
 
Evaluation one (1)
Evaluation one (1)Evaluation one (1)
Evaluation one (1)
 
สื่อการเรียนรู้
สื่อการเรียนรู้สื่อการเรียนรู้
สื่อการเรียนรู้
 
Par2012
Par2012Par2012
Par2012
 
Smartphones' Security
Smartphones' SecuritySmartphones' Security
Smartphones' Security
 
Corporate presentation-(september-2015-corrected)
Corporate presentation-(september-2015-corrected)Corporate presentation-(september-2015-corrected)
Corporate presentation-(september-2015-corrected)
 
May 2016 Corporate Presentation
May 2016 Corporate PresentationMay 2016 Corporate Presentation
May 2016 Corporate Presentation
 

Similar to RSpecPiccolo gem

Cobolでもやりたいテスト自動化
Cobolでもやりたいテスト自動化 Cobolでもやりたいテスト自動化
Cobolでもやりたいテスト自動化 daisukhayash
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3Kiyotaka Oku
 
RcppEigen and SVD
RcppEigen and SVDRcppEigen and SVD
RcppEigen and SVDXiangze
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
Introduction to guard + rspec
Introduction to guard + rspecIntroduction to guard + rspec
Introduction to guard + rspeckoko_u
 
Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in SinatraUchio Kondo
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!com044
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像Kiwamu Okabe
 
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料慎平 仁藤
 
ニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirkojingharang
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料slankdev
 
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開Unity Technologies Japan K.K.
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 

Similar to RSpecPiccolo gem (20)

Cobolでもやりたいテスト自動化
Cobolでもやりたいテスト自動化 Cobolでもやりたいテスト自動化
Cobolでもやりたいテスト自動化
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 
RcppEigen and SVD
RcppEigen and SVDRcppEigen and SVD
RcppEigen and SVD
 
What is JSpec
What is JSpecWhat is JSpec
What is JSpec
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
Introduction to guard + rspec
Introduction to guard + rspecIntroduction to guard + rspec
Introduction to guard + rspec
 
Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in Sinatra
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像
 
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
 
ニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixirニコニコを支える Erlang / Elixir
ニコニコを支える Erlang / Elixir
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 
Leiningen超速入門
Leiningen超速入門Leiningen超速入門
Leiningen超速入門
 
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開
【Unity道場 名古屋SP】Unity導入から活用までの開発フローを大公開
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

RSpecPiccolo gem