SlideShare a Scribd company logo
1 of 20
Download to read offline
JUnit実践⼊入⾨門
         写経・実践会  in  横浜  #3
             2013/02/02(⼟土)  at  横浜タネマキ



                               @shinyaa31

13年2月3日日曜日                                  1
横浜タネマキなう!  #junitbook




             2
13年2月3日日曜日                2
『JUnit実践⼊入⾨門』
                                書籍名:
                                JUnit実践入門 ~体系的に学ぶユニットテストの技法
                                出版社:技術評論社
                                発売日:2012/11/21
                                ボリューム:480ページ
                                著者:渡辺 修司(TwitterID:@shuji_w6e)




  Javaのテスティングフレームワークとして事実上のデファクトスタンダードの地位を占めているJUnitは、
  なにぶん長い歴史を持っていますので、触れたことのある人は膨大な数に上ります。
  しかし、日本語のまとまった情報は意外と少なく、本家JUnitが進化するに従って経年劣化を
  起こしてしまっているというのが現状です。


  そのような状況が変わります。渡辺さんの「JUnit便り」が札幌から全国へ届く日がやってきたのです。


  テスト駆動開発者 和田卓人 (※書籍「推薦のことば」より一部抜粋)



13年2月3日日曜日                                                       3
横浜タネマキ




13年2月3日日曜日    4
本⽇日のタイムテーブル
 15:00  開始・諸説明・アイスブレイク等(15分)
 15:15  対象範囲の写経・実践・ディスカッション等(90分)
         ※第11章  テストダブル
               (黙読5分〜~写経ディスカッション25分)×3を⽬目安に
 16:45  フリータイム(115分)
         ※LTを途中で挟む予定
 18:30  ふりかえり、次回予定調整等  (30分)
 19:00  撤収




13年2月3日日曜日                                    5
今回の対象範囲
 Part  3  ユニットテストの活⽤用と実践
   第11章  テストダブル
   • 11.1  テスタビリティを⾼高めるリファクタリング
   • 11.2  テストダブルとは?
   • 11.3  Mockitoによるモックオブジェクト




13年2月3日日曜日                        6
テストダブル
  テストダブル (Test Double) とは、ソフトウェアテストにおいて、テスト対象が依存しているコンポーネントを置き換
  える代用品のこと。ダブルは代役、影武者を意味する。

  テストを実行するには、テスト対象のシステム (SUT; System Under Test) に加えて、テスト対象が依存するコンポー
  ネント (DOC; Depend-On Component) が必要になる。しかし、依存コンポーネントは、常に利用できるとは限らな
  い。依存コンポーネントがテスト環境で利用できない理由には、次のようなものが挙げられる。

   •   入手できない。
   •   テストで使いたい結果を返さない。
   •   実行に時間がかかるなどの、望ましくない副作用がある。
  こういった問題を回避するには、依存コンポーネントを、テスト用のコンポーネントと入れ替えるテクニックが利用
  できる。この代用のコンポーネントを、テストダブルと呼ぶ。




                          http://ja.wikipedia.org/wiki/テストダブル
13年2月3日日曜日                                                             7
mockito  ....モック伊藤?




              http://ja.wikipedia.org/wiki/川⼝口浩
13年2月3日日曜日                                        8
モック伊藤とは




             http://togetter.com/li/422376
13年2月3日日曜日                                   9
アイスブレイク
   ・書籍を持って来た?
   ・書籍を読んで来た?
   ・書籍対象範囲の写経を済ませた?




13年2月3日日曜日            10
アイスブレイク
   ・TDD、ペアプロ経験等
    職場でバリバリ実践
    業務外で個人的に
   ・本日準備環境
    OS:Windows/Mac/その他
    言語:Java/Groovy/その他
    IDE:Eclipse/IntelliJ IDEA/その他


13年2月3日日曜日                          11
アイスブレイク
   ・実は私、モック伊藤なんです...
   ・いや、私こそがモック伊藤だ
   ・軽く自己紹介、意気込みなどを




13年2月3日日曜日             12
mockito
     Mockito is a mocking framework that tastes really good. It lets you write beautiful
     tests with clean & simple API. Mockito doesn't give you hangover because the
     tests are very readable and they produce clean verification errors. Read more
     about features & motivations.

     "We decided during the main conference that we should use JUnit 4 and Mockito
     because we think they are the future of TDD and mocking in Java" - Dan North,
     the originator of BDD



                                 http://code.google.com/p/mockito/




13年2月3日日曜日                                                                                 13
写経・ディスカッション
 Part  3  ユニットテストの活⽤用と実践
   第11章  テストダブル
   • 11.1  テスタビリティを⾼高めるリファクタリング
   • 11.2  テストダブルとは?
   • 11.3  Mockitoによるモックオブジェクト




13年2月3日日曜日                        14
写経・ディスカッション
 11.1  テスタビリティを⾼高めるリファクタリング
 • テスタビリティとは?
 • リファクタリングとは?
 • メソッドの抽出
 • 委譲オブジェクトの抽出




13年2月3日日曜日                    15
写経・ディスカッション
 11.2  テストダブルとは?
   • スタブ  -‐‑‒  依存オブジェクトに予測可能な振る舞いをさせる
   • モック  -‐‑‒  依存オブジェクトの呼び出しを検証する
   • スパイ  -‐‑‒  依存オブジェクトの呼び出しを監視する




13年2月3日日曜日                               16
写経・ディスカッション
 11.3  Mockitoによるモックオブジェクト
   •   Mockitoとは?
   •   Mockitoを利利⽤用する準備
   •   モックオブジェクトの作成
   •   スタブメソッドの戻り値
   •   スタブメソッドの定義
   •   スタブメソッドの検証
   •   部分的なモックオブジェクト
   •   スパイオブジェクト




13年2月3日日曜日                   17
写経・ディスカッション
 ※その他モック関連ライブラリ等
   •   jMockit
   •   EasyMock
   •   MockRunner
   •   GroovyにおけるMock




13年2月3日日曜日              18
Lightning
     Talk
13年2月3日日曜日       19
撤収!
13年2月3日日曜日    20

More Related Content

What's hot

MobProgramming at ヴァル研究所 - 進行
MobProgramming at ヴァル研究所 - 進行MobProgramming at ヴァル研究所 - 進行
MobProgramming at ヴァル研究所 - 進行Toshiyuki Ando
 
リリースされたばかりの『Ubuntu 16.04LTS』のすべて
リリースされたばかりの『Ubuntu 16.04LTS』のすべてリリースされたばかりの『Ubuntu 16.04LTS』のすべて
リリースされたばかりの『Ubuntu 16.04LTS』のすべてHiroshi Chonan
 
Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。KyutatsuNishiura
 
深層強化学習でマルチエージェント学習(後篇)
深層強化学習でマルチエージェント学習(後篇)深層強化学習でマルチエージェント学習(後篇)
深層強化学習でマルチエージェント学習(後篇)Junichiro Katsuta
 
We are OSS Communities: Introduction of Start Python Club
We are OSS Communities: Introduction of Start Python ClubWe are OSS Communities: Introduction of Start Python Club
We are OSS Communities: Introduction of Start Python ClubTakeshi Akutsu
 
プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!Kouji Matsui
 
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfUbuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfHiroshi Chonan
 
Pythonのプロファイリング
PythonのプロファイリングPythonのプロファイリング
Pythonのプロファイリングysakaguchi
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5Takeshi Akutsu
 
プログラミング学習とScratch raspi python
プログラミング学習とScratch raspi pythonプログラミング学習とScratch raspi python
プログラミング学習とScratch raspi pythonYoshitaka Shiono
 
Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Masayuki Nii
 

What's hot (20)

MobProgramming at ヴァル研究所 - 進行
MobProgramming at ヴァル研究所 - 進行MobProgramming at ヴァル研究所 - 進行
MobProgramming at ヴァル研究所 - 進行
 
T4使ってみた
T4使ってみたT4使ってみた
T4使ってみた
 
リリースされたばかりの『Ubuntu 16.04LTS』のすべて
リリースされたばかりの『Ubuntu 16.04LTS』のすべてリリースされたばかりの『Ubuntu 16.04LTS』のすべて
リリースされたばかりの『Ubuntu 16.04LTS』のすべて
 
Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。
 
深層強化学習でマルチエージェント学習(後篇)
深層強化学習でマルチエージェント学習(後篇)深層強化学習でマルチエージェント学習(後篇)
深層強化学習でマルチエージェント学習(後篇)
 
We are OSS Communities: Introduction of Start Python Club
We are OSS Communities: Introduction of Start Python ClubWe are OSS Communities: Introduction of Start Python Club
We are OSS Communities: Introduction of Start Python Club
 
CgiSecure
CgiSecureCgiSecure
CgiSecure
 
S28 t0 introduction
S28 t0 introductionS28 t0 introduction
S28 t0 introduction
 
プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!プロ生ちゃんをひろっちゃう!
プロ生ちゃんをひろっちゃう!
 
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfUbuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
 
Introduction
IntroductionIntroduction
Introduction
 
Pythonのプロファイリング
PythonのプロファイリングPythonのプロファイリング
Pythonのプロファイリング
 
S15 t0 introduction
S15 t0 introductionS15 t0 introduction
S15 t0 introduction
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5
 
S01 t0 orientation
S01 t0 orientationS01 t0 orientation
S01 t0 orientation
 
プログラミング学習とScratch raspi python
プログラミング学習とScratch raspi pythonプログラミング学習とScratch raspi python
プログラミング学習とScratch raspi python
 
S05_T0_orientation
S05_T0_orientationS05_T0_orientation
S05_T0_orientation
 
Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装
 
S03 t0 get_started
S03 t0 get_startedS03 t0 get_started
S03 t0 get_started
 
Gnomeとdogtai
GnomeとdogtaiGnomeとdogtai
Gnomeとdogtai
 

Similar to 『JUnit実践入門』写経・実践会 in 横浜 #3

『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4shinyaa31
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lttorutk
 
LT司会資料(わんくま同盟名古屋勉強会#22)
LT司会資料(わんくま同盟名古屋勉強会#22)LT司会資料(わんくま同盟名古屋勉強会#22)
LT司会資料(わんくま同盟名古屋勉強会#22)You&I
 
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究Yuichiro Saito
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワークKoji Hasegawa
 
LT司会資料(わんくま同盟名古屋勉強会#21)
LT司会資料(わんくま同盟名古屋勉強会#21)LT司会資料(わんくま同盟名古屋勉強会#21)
LT司会資料(わんくま同盟名古屋勉強会#21)You&I
 
上級ユーザビリティテスト手法
上級ユーザビリティテスト手法上級ユーザビリティテスト手法
上級ユーザビリティテスト手法Tarumoto Tetsuya
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方Shuji Watanabe
 
Jumvo 2.0 における デザイナーとエンジニアの連携
Jumvo 2.0 における デザイナーとエンジニアの連携Jumvo 2.0 における デザイナーとエンジニアの連携
Jumvo 2.0 における デザイナーとエンジニアの連携Norihisa Nagano
 
GUI Test is (not) necessary
GUI Test is (not) necessaryGUI Test is (not) necessary
GUI Test is (not) necessaryHiroshi Maekawa
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)Kazunori Sakamoto
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしyamanekko
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Masanori Satoh
 
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -Masahito Zembutsu
 
20101130 南東京iphone開発3
20101130 南東京iphone開発320101130 南東京iphone開発3
20101130 南東京iphone開発3Masaki Kase
 
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピング
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピングPOStudy Day 2012 in Okinawa - ユーザーストーリーマッピング
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピング満徳 関
 
コンポーネントテストで開発効率を上げよう
コンポーネントテストで開発効率を上げようコンポーネントテストで開発効率を上げよう
コンポーネントテストで開発効率を上げようMatsuoka Hiromitsu
 
POStudy Conference 2012 - ユーザーストーリーマッピング
POStudy Conference 2012 - ユーザーストーリーマッピングPOStudy Conference 2012 - ユーザーストーリーマッピング
POStudy Conference 2012 - ユーザーストーリーマッピング満徳 関
 
事例発表 小山
事例発表 小山事例発表 小山
事例発表 小山takepu
 

Similar to 『JUnit実践入門』写経・実践会 in 横浜 #3 (20)

『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
 
LT司会資料(わんくま同盟名古屋勉強会#22)
LT司会資料(わんくま同盟名古屋勉強会#22)LT司会資料(わんくま同盟名古屋勉強会#22)
LT司会資料(わんくま同盟名古屋勉強会#22)
 
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
コミュニケーションスキルを重視したソフトウェア技術者教育手法の研究
 
Code injectiontool
Code injectiontoolCode injectiontool
Code injectiontool
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワーク
 
LT司会資料(わんくま同盟名古屋勉強会#21)
LT司会資料(わんくま同盟名古屋勉強会#21)LT司会資料(わんくま同盟名古屋勉強会#21)
LT司会資料(わんくま同盟名古屋勉強会#21)
 
上級ユーザビリティテスト手法
上級ユーザビリティテスト手法上級ユーザビリティテスト手法
上級ユーザビリティテスト手法
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
 
Jumvo 2.0 における デザイナーとエンジニアの連携
Jumvo 2.0 における デザイナーとエンジニアの連携Jumvo 2.0 における デザイナーとエンジニアの連携
Jumvo 2.0 における デザイナーとエンジニアの連携
 
GUI Test is (not) necessary
GUI Test is (not) necessaryGUI Test is (not) necessary
GUI Test is (not) necessary
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程
 
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
 
20101130 南東京iphone開発3
20101130 南東京iphone開発320101130 南東京iphone開発3
20101130 南東京iphone開発3
 
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピング
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピングPOStudy Day 2012 in Okinawa - ユーザーストーリーマッピング
POStudy Day 2012 in Okinawa - ユーザーストーリーマッピング
 
コンポーネントテストで開発効率を上げよう
コンポーネントテストで開発効率を上げようコンポーネントテストで開発効率を上げよう
コンポーネントテストで開発効率を上げよう
 
POStudy Conference 2012 - ユーザーストーリーマッピング
POStudy Conference 2012 - ユーザーストーリーマッピングPOStudy Conference 2012 - ユーザーストーリーマッピング
POStudy Conference 2012 - ユーザーストーリーマッピング
 
事例発表 小山
事例発表 小山事例発表 小山
事例発表 小山
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

『JUnit実践入門』写経・実践会 in 横浜 #3

  • 1. JUnit実践⼊入⾨門 写経・実践会  in  横浜  #3 2013/02/02(⼟土)  at  横浜タネマキ @shinyaa31 13年2月3日日曜日 1
  • 2. 横浜タネマキなう!  #junitbook 2 13年2月3日日曜日 2
  • 3. 『JUnit実践⼊入⾨門』 書籍名: JUnit実践入門 ~体系的に学ぶユニットテストの技法 出版社:技術評論社 発売日:2012/11/21 ボリューム:480ページ 著者:渡辺 修司(TwitterID:@shuji_w6e) Javaのテスティングフレームワークとして事実上のデファクトスタンダードの地位を占めているJUnitは、 なにぶん長い歴史を持っていますので、触れたことのある人は膨大な数に上ります。 しかし、日本語のまとまった情報は意外と少なく、本家JUnitが進化するに従って経年劣化を 起こしてしまっているというのが現状です。 そのような状況が変わります。渡辺さんの「JUnit便り」が札幌から全国へ届く日がやってきたのです。 テスト駆動開発者 和田卓人 (※書籍「推薦のことば」より一部抜粋) 13年2月3日日曜日 3
  • 5. 本⽇日のタイムテーブル 15:00  開始・諸説明・アイスブレイク等(15分) 15:15  対象範囲の写経・実践・ディスカッション等(90分)         ※第11章  テストダブル               (黙読5分〜~写経ディスカッション25分)×3を⽬目安に 16:45  フリータイム(115分)         ※LTを途中で挟む予定 18:30  ふりかえり、次回予定調整等  (30分) 19:00  撤収 13年2月3日日曜日 5
  • 6. 今回の対象範囲 Part  3  ユニットテストの活⽤用と実践  第11章  テストダブル • 11.1  テスタビリティを⾼高めるリファクタリング • 11.2  テストダブルとは? • 11.3  Mockitoによるモックオブジェクト 13年2月3日日曜日 6
  • 7. テストダブル テストダブル (Test Double) とは、ソフトウェアテストにおいて、テスト対象が依存しているコンポーネントを置き換 える代用品のこと。ダブルは代役、影武者を意味する。 テストを実行するには、テスト対象のシステム (SUT; System Under Test) に加えて、テスト対象が依存するコンポー ネント (DOC; Depend-On Component) が必要になる。しかし、依存コンポーネントは、常に利用できるとは限らな い。依存コンポーネントがテスト環境で利用できない理由には、次のようなものが挙げられる。 • 入手できない。 • テストで使いたい結果を返さない。 • 実行に時間がかかるなどの、望ましくない副作用がある。 こういった問題を回避するには、依存コンポーネントを、テスト用のコンポーネントと入れ替えるテクニックが利用 できる。この代用のコンポーネントを、テストダブルと呼ぶ。 http://ja.wikipedia.org/wiki/テストダブル 13年2月3日日曜日 7
  • 8. mockito  ....モック伊藤? http://ja.wikipedia.org/wiki/川⼝口浩 13年2月3日日曜日 8
  • 9. モック伊藤とは http://togetter.com/li/422376 13年2月3日日曜日 9
  • 10. アイスブレイク ・書籍を持って来た? ・書籍を読んで来た? ・書籍対象範囲の写経を済ませた? 13年2月3日日曜日 10
  • 11. アイスブレイク ・TDD、ペアプロ経験等  職場でバリバリ実践  業務外で個人的に ・本日準備環境  OS:Windows/Mac/その他  言語:Java/Groovy/その他  IDE:Eclipse/IntelliJ IDEA/その他 13年2月3日日曜日 11
  • 12. アイスブレイク ・実は私、モック伊藤なんです... ・いや、私こそがモック伊藤だ ・軽く自己紹介、意気込みなどを 13年2月3日日曜日 12
  • 13. mockito Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with clean & simple API. Mockito doesn't give you hangover because the tests are very readable and they produce clean verification errors. Read more about features & motivations. "We decided during the main conference that we should use JUnit 4 and Mockito because we think they are the future of TDD and mocking in Java" - Dan North, the originator of BDD http://code.google.com/p/mockito/ 13年2月3日日曜日 13
  • 14. 写経・ディスカッション Part  3  ユニットテストの活⽤用と実践  第11章  テストダブル • 11.1  テスタビリティを⾼高めるリファクタリング • 11.2  テストダブルとは? • 11.3  Mockitoによるモックオブジェクト 13年2月3日日曜日 14
  • 15. 写経・ディスカッション 11.1  テスタビリティを⾼高めるリファクタリング • テスタビリティとは? • リファクタリングとは? • メソッドの抽出 • 委譲オブジェクトの抽出 13年2月3日日曜日 15
  • 16. 写経・ディスカッション 11.2  テストダブルとは? • スタブ  -‐‑‒  依存オブジェクトに予測可能な振る舞いをさせる • モック  -‐‑‒  依存オブジェクトの呼び出しを検証する • スパイ  -‐‑‒  依存オブジェクトの呼び出しを監視する 13年2月3日日曜日 16
  • 17. 写経・ディスカッション 11.3  Mockitoによるモックオブジェクト • Mockitoとは? • Mockitoを利利⽤用する準備 • モックオブジェクトの作成 • スタブメソッドの戻り値 • スタブメソッドの定義 • スタブメソッドの検証 • 部分的なモックオブジェクト • スパイオブジェクト 13年2月3日日曜日 17
  • 18. 写経・ディスカッション ※その他モック関連ライブラリ等 • jMockit • EasyMock • MockRunner • GroovyにおけるMock 13年2月3日日曜日 18
  • 19. Lightning Talk 13年2月3日日曜日 19