Submit Search
Upload
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
•
3 likes
•
5,231 views
Yuichi Adachi
Follow
ヤフー vs クラスメソッド Buttle6 発表資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
初めての単体テスト
初めての単体テスト
Basuke Suzuki
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
kyon mm
BeanValidation
BeanValidation
Oda Shinsuke
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
kimukou_26 Kimukou
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
Recommended
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
初めての単体テスト
初めての単体テスト
Basuke Suzuki
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
kyon mm
BeanValidation
BeanValidation
Oda Shinsuke
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
Eclipse ADTとAndroidStudio両方で動かせる開発環境構築
kimukou_26 Kimukou
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
CLRH_120414_WFTDD
CLRH_120414_WFTDD
Tomoyuki Obi
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
最近の単体テスト
最近の単体テスト
Ken Morishita
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
Tatsuya Ishikawa
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
dnoguchi
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
智治 長沢
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
Takeshi Fukasawa
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
Yasuhisa Arakawa
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
Yuki Hirai
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
yuki0211s
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
Shingo Hiraya
More Related Content
What's hot
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
CLRH_120414_WFTDD
CLRH_120414_WFTDD
Tomoyuki Obi
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
最近の単体テスト
最近の単体テスト
Ken Morishita
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
Tatsuya Ishikawa
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
dnoguchi
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
智治 長沢
What's hot
(17)
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
CLRH_120414_WFTDD
CLRH_120414_WFTDD
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
最近の単体テスト
最近の単体テスト
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
テストとの上手な付き合い方
テストとの上手な付き合い方
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
Viewers also liked
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
Takeshi Fukasawa
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
Yasuhisa Arakawa
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
Yuki Hirai
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
yuki0211s
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
Shingo Hiraya
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
kakegawa-atsushi
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
Rikitake Oohashi
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
Kenji Kinukawa
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境
Yoichiro Sakurai
Vasily i os-20140403
Vasily i os-20140403
Yusuke Arai
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術
Yoichiro Sakurai
Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介
Kenji Kinukawa
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
Viewers also liked
(13)
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境
Vasily i os-20140403
Vasily i os-20140403
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術
Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Similar to ユニットテスト初学者がKiwiFramework非同期テストで失敗した
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
ceres-inc
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Yohei Onishi
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
Rakuten Group, Inc.
テストコードのリファクタリング
テストコードのリファクタリング
Shuji Watanabe
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
Takahiro Yoshimura
Android ReactNative UITesting
Android ReactNative UITesting
Vishal Banthia
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
Recruit Lifestyle Co., Ltd.
ゼロから始めたE2Eテスト
ゼロから始めたE2Eテスト
ushiboy
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
智治 長沢
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
Similar to ユニットテスト初学者がKiwiFramework非同期テストで失敗した
(20)
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
単体テストをやってみた~既存サービスに単体テストを追加するチャレンジ~
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
テストコードのリファクタリング
テストコードのリファクタリング
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
Android ReactNative UITesting
Android ReactNative UITesting
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
ゼロから始めたE2Eテスト
ゼロから始めたE2Eテスト
Laravelとテストについて
Laravelとテストについて
Unit testで定時帰宅!
Unit testで定時帰宅!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
More from Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28
Yuichi Adachi
Swift2.x を Scala からみる
Swift2.x を Scala からみる
Yuichi Adachi
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19
Yuichi Adachi
続・ゲンバのSwift
続・ゲンバのSwift
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15
Yuichi Adachi
ゲンバのSwift
ゲンバのSwift
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14
Yuichi Adachi
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
Yuichi Adachi
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
Yuichi Adachi
Swiftの新機能 Optional
Swiftの新機能 Optional
Yuichi Adachi
Applicative functor
Applicative functor
Yuichi Adachi
More from Yuichi Adachi
(12)
Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28
Swift2.x を Scala からみる
Swift2.x を Scala からみる
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19
続・ゲンバのSwift
続・ゲンバのSwift
Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15
ゲンバのSwift
ゲンバのSwift
Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
Swiftの新機能 Optional
Swiftの新機能 Optional
Applicative functor
Applicative functor
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Recently uploaded
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
1.
ユニットテスト初学者が Kiwi framework 非同期テストで失敗した ヤフー vs
クラスメソッド Buttle 6 Yuichi Adachi ! 2014 Feb 25 Copyright © Classmethod, Inc. 1
2.
Self Introduction ! ! ・iOSアプリ開発&エンジニア歴もう少しで二年 ! ・去年12月にクラスメソッドに入社しました ! ・テスト歴は二ヶ月くらいです Copyright ©
Classmethod, Inc. 2
3.
今日話すこと ! ・Unit Test の利点 ! ・Kiwiの特徴 ! ・非同期テストでの失敗 Copyright
© Classmethod, Inc. 3
4.
Unit Testの利点 Copyright ©
Classmethod, Inc. 4
5.
Unit Testの利点 ・ヘッダのコメント等では把握しきれない挙動 も把握できる。 Copyright ©
Classmethod, Inc. 5
6.
Unit Testの利点 ・ヘッダのコメント等では把握しきれない挙動 も把握できる。 ! ・画面表示をせず、 +Uのみで挙動が期待する 内容かチェックできる。 Copyright
© Classmethod, Inc. 6
7.
Unit Testの利点 ・ヘッダのコメント等では把握しきれない挙動 も把握できる。 ! ・画面表示をせず、 +Uのみで挙動が期待する 内容かチェックできる。 ! ・副作用を含まないコードに貪欲になれる。 Copyright
© Classmethod, Inc. 7
8.
Kiwiの特徴 Copyright © Classmethod,
Inc. 8
9.
Kiwiの特徴 ! ・XCTest, OCUnitのようにテストメソッド名 を英語で逐一考えなくていい ! ! Copyright ©
Classmethod, Inc. 9
10.
Kiwiの特徴 ! ・XCTest, OCUnitのようにテストメソッド名 を英語で逐一考えなくていい ! ・テストケースを対象ごと、文脈ごとに区切れる ! Copyright ©
Classmethod, Inc. 10
11.
! サーバーと切り離して 非同期ユニットテスト Copyright © Classmethod,
Inc. 11
12.
! テストコードが 実行されない Copyright © Classmethod,
Inc. 12
13.
! ソースURL: http://github.com/UsrNameu1/KiwiTestStudy Copyright © Classmethod,
Inc. 13
14.
テスト概略 Copyright © Classmethod,
Inc. 14
15.
テスト概略 Copyright © Classmethod,
Inc. この部分を 15 テスト
16.
テスト概略 Copyright © Classmethod,
Inc. この部分を 16 テスト stub:withBlock: で置き換え
17.
ブロックハンドラメソッド の挙動を決定 + (void)stub:(SEL)aSelector withBlock:(id
(^)(NSArray *))block Copyright © Classmethod, Inc. 17
18.
ブロックハンドラメソッド の挙動を決定 + (void)stub:(SEL)aSelector withBlock:(id
(^)(NSArray *))block 返したいメソッドのセレクタを挿入 Copyright © Classmethod, Inc. 18
19.
ブロックハンドラメソッド の挙動を決定 + (void)stub:(SEL)aSelector withBlock:(id
(^)(NSArray *))block メソッド呼び出しの 引数、返り値を決め打ち ブロック引数はNSArray Copyright © Classmethod, Inc. 19 で取得できる
20.
YADWebServiceSpec.m [NSURLConnection stub:@selector(sendAsynchronousRequest:queue:completionHandler:) withBlock:^id(NSArray *params) { void
(^handler)(NSURLResponse *, NSData *, NSError *) = params[2]; handler(nil, data, nil); return nil; }]; }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; }); Copyright © Classmethod, Inc. 20
21.
YADWebServiceSpec.m [NSURLConnection stub:@selector(sendAsynchronousRequest:queue:completionHandler:) withBlock:^id(NSArray *params) { void
(^handler)(NSURLResponse *, NSData *, NSError *) = params[2]; handler(nil, data, nil); return nil; }]; Comments for describe, context, it }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; テスト コード }); Copyright © Classmethod, Inc. 21
22.
YADWebServiceSpec.m [NSURLConnection stub:@selector(sendAsynchronousRequest:queue:completionHandler:) withBlock:^id(NSArray *params) { void
(^handler)(NSURLResponse *, NSData *, NSError *) = params[2]; handler(nil, data, nil); return nil; }]; stub:withBlock: Comments for で置き換え describe, context, it }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; テスト コード }); Copyright © Classmethod, Inc. 22
23.
Copyright © Classmethod,
Inc. 23
24.
BreakPointで ハンドラ内部が走っているか確認 Copyright © Classmethod,
Inc. 24
25.
YADWebServiceSpec.m [NSURLConnection stub:@selector(sendAsynchronousRequest:queue:completionHandler:) withBlock:^id(NSArray *params) { void
(^handler)(NSURLResponse *, NSData *, NSError *) = params[2]; ! handler(nil, data, nil); return nil; ! }]; }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ テストに対するコメント [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; 使い分けてますか? }); Copyright © Classmethod, Inc. 25
26.
YADWebServiceSpec.m [NSURLConnection stub:@selector(sendAsynchronousRequest:queue:completionHandler:) withBlock:^id(NSArray *params) { void
(^handler)(NSURLResponse *, NSData *, NSError *) = params[2]; ! handler(nil, data, nil); return nil; ! }]; }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ テストに対するコメント [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; 使い分けてますか? }); Copyright © Classmethod, Inc. 26
27.
実行しない! Copyright © Classmethod,
Inc. 27
28.
! Kiwi非同期ブロックハンドラ テストの注意点 Copyright © Classmethod,
Inc. 28
29.
! Kiwi非同期ブロックハンドラ テストの注意点 ・ブロック内で結果を取得、ブロックの後で確認 ! Copyright © Classmethod,
Inc. 29
30.
! Kiwi非同期ブロックハンドラ テストの注意点 ・ブロック内で結果を取得、ブロックの後で確認 ! ・expectFutureValue shouldEventually Copyright ©
Classmethod, Inc. 30
31.
it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary
*response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; Comments for describe, context, it }); Copyright © Classmethod, Inc. 31
32.
it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary
*response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; Comments for describe, context, it }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ __block NSDictionary *res; [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { res = response; }]; [[expectFutureValue(res) shouldEventually] beNonNil]; [[expectFutureValue(res[@"id"]) shouldEventually] equal:object[@"id"]]; [[expectFutureValue(res[@"name"]) shouldEventually] equal:object[@"name"]]; }); Copyright © Classmethod, Inc. 32
33.
it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary
*response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; Comments for describe, context, it }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ __block NSDictionary *res; [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { res = response; }]; [[expectFutureValue(res) shouldEventually] beNonNil]; [[expectFutureValue(res[@"id"]) shouldEventually] equal:object[@"id"]]; [[expectFutureValue(res[@"name"]) shouldEventually] equal:object[@"name"]]; }); Copyright © Classmethod, Inc. 33
34.
it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary
*response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; ぶ }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ __block NSDictionary *res; [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { res = response; }]; [[expectFutureValue(res) shouldEventually] beNonNil]; ! [[expectFutureValue(res[@"id"]) shouldEventually] equal:object[@"id"]]; [[expectFutureValue(res[@"name"]) shouldEventually] equal:object[@"name"]]; ブロック内で結果を取得、 ブロックの後で確認 }); Copyright © Classmethod, Inc. 34
35.
it(@"ブロックハンドラから正常に値が帰ってくる", ^{ [webService fetchDataWithCompletion:^(NSDictionary
*response, NSError *err) { [[response should] beNonNil]; [[response[@"id"] should] equal:object[@"id"]]; [[response[@"name"] should] equal:object[@"name"]]; }]; Comments for describe, context, it }); it(@"ブロックハンドラから正常に値が帰ってくる", ^{ __block NSDictionary *res; [webService fetchDataWithCompletion:^(NSDictionary *response, NSError *err) { res = response; }]; [[expectFutureValue(res) shouldEventually] beNonNil]; [[expectFutureValue(res[@"id"]) shouldEventually] equal:object[@"id"]]; [[expectFutureValue(res[@"name"]) shouldEventually] equal:object[@"name"]]; expectFutureValue shouldEventually }); Copyright © Classmethod, Inc. 35
36.
Copyright © Classmethod,
Inc. 36
37.
実行される! Copyright © Classmethod,
Inc. 37
38.
References ! ! ・Asynchronous Testing -
allending/Kiwi Wiki last edited by Dave Meehan, cited 2014 Feb 09 Available from : https://github.com/allending/Kiwi/wiki/Asynchronous-Testing Copyright © Classmethod, Inc. 38
Download now