Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

テストを書きたいあなたが意識すべきただ一つのこと

7,212 views

Published on

iOS_LT会(2014/1/29)の発表資料です。

Published in: Technology
  • Be the first to comment

テストを書きたいあなたが意識すべきただ一つのこと

  1. 1. テストを書きたいあなたが 意識すべきただ一つのこと Matsuda Shoichi ( @shoma2da )
  2. 2. 入出力をコントロール できる状態にせよ
  3. 3. テストが 困難なコード① メソッド内で オブジェクトを 「気を使わずに」生成!
  4. 4. テストが 困難なコード② 複数のオブジェクトを メソッド内で使用 もしくは 深堀りしていく ! 個人的な感覚では 3つ以上出てきたら注意 5つ以上出てきたら危険 オブジェクト指向エクササイズに通じるものが…
  5. 5. テストの実践パターン ● イニシャライザ、メソッドの引数で渡す Easy ● FactoryMethod
 →違和感があればAbstractFactoryやBuilder、
  Prototypeあたりも考える ● アクセス修飾子を緩くする 手段 終 最 入出力をコントロール できる状態にせよ
  6. 6. イニシャライザ・メソッドの引数で渡す E sy a イニシャライザ 会社の従業員数を取得する テストコード テスト対象 テストするときは Employeesのダミーを 用意する
  7. 7. FactoryMethod テスト対象 テストコード 生成している 依存オブジェクト生成用の メソッドを用意 ダミーのEmployeesを作成する Companyを用意してテストする
  8. 8. FactoryMethodでも違和感… 生成に関するデザインパターンを学びましょう!! AbstractFactory、Builder、Prototype 初めての人向け 本格派向け
  9. 9. アクセス修飾子を緩くする 手段 終 最 テスト対象 テストコード 読み書き可能なpropertyに引き上げ 直接、ダミーのEmployeesに差し替え 何が良くないのか 1.カプセル化の破壊 2.実際に依存しているオブジェクトを一度生成してしまう
  10. 10. テストが困難なコードを もう一度復習 ● メソッド内でオブジェクトを「気を使わずに」生成
 →オブジェクト(入出力)差し替えが不可能になる!!
 ● 複数のオブジェクトをメソッド内で使用もしくは
 深堀りしていく
 →差し替えるオブジェクト数が増えて
  何をテストしているのか極端にわかりずらくなる!!
  11. 11. さあテストしよう UIテスト/シナリオテストでも基本は同じです また、言語が変わってももちろん同じです 実際にはモックライブラリも積極的使いましょう

×