モックライブラリを使ってきちんとユニットテストする #objective-c

Post on 19-Jun-2015

1.557 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

iOS_LT #7にて発表しました。

TRANSCRIPT

Shoichi Matsuda ( @shoma2da ) iOS_LT #7

モックライブラリを使って きちんとユニットテストする

ユニットテスト できてますか?

会社クラス

従業員クラス

iOSエンジニアかどうか

iOSエンジニアは何%?

ユニットテスト?してみる4人の従業員を生成。3人はiOSエンジニア!

iOSエンジニアは75%のはず!

ユニットテストとはユニットテストは、クラスやメソッドというプログラムの最小単位を対象とし、プログラマが行うテストです。 http://dev.classmethod.jp/testing/10_errors_about_unit_testing/

!

単体テスト(ユニットテストと呼ばれることもあります)は、プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストです。通常、関数やメソッドが単体テストの単位(ユニット)となります。 http://www.techmatrix.co.jp/quality/validation/unittest.html

ユニットテスト?してみる4人の従業員を生成。3人はiOSエンジニア!

iOSエンジニアは75%のはず!

ユニットテスト?してみる4人の従業員を生成。3人はiOSエンジニア!

iOSエンジニアは75%のはず!

このテストの目的は正しく「何%がiOSエンジニアか」を取得できるかどうかのはずです。 しかし従業員クラスの「iOSエンジニアかどうか」の 実装によってテスト結果が変わってしまいます。 つまりテスト対象が2つのクラスになっちゃってます。

きちんとユニットテストするなら①テスト用に継承したダミークラスを用意する。例えば… ・DummyIOsEmployee:必ずiOSエンジニア ・DummyNotIOsEmployee: 必ずiOSエンジニアではない !

②モックライブラリを使う

きちんとユニットテストするなら①テスト用に継承したダミークラスを用意する。例えば… ・DummyIOsEmployee:必ずiOSエンジニア ・DummyNotIOsEmployee: 必ずiOSエンジニアではない !

②モックライブラリを使う

メソッドが多

かったりする

大変!!

モックライブラリ

cocoapodsなどで導入

できること返却値を固定!

できることメソッドが呼び出されたかどうかをテスト!

できることクラスメソッドを置き換え!

できること一部分だけモック化!

具体的にはいつ使うの?●基本的にはどんなときでも使えます!→オブジェクトは関連しあって動作しているはず→但し、依存関係やクラスの責務が無茶苦茶だと かなり無理があります。設計から見直しましょう。→View層もテストするか、などはそれぞれの判断が あるでしょう

●ファイル入出力やHTTPリクエストの時は特に効果絶大!!

その他のモックライブラリ

使ったことないので詳細は知りません…

OCMockito LRMocky

Thank you!! きちんとユニットテストしましょう!

top related