タグ

ブックマーク / qiita.com/flyaway (2)

  • Java: 単体テストを書くためにstaticメソッドから脱却しよう #1 原則・ラップメソッド - Qiita

    概要 レガシーコードでは、単体テストを書こうとした際に、しばしば既存のstaticメソッドが妨げになることがある。 この記事では、「新たにそのようなコードを増やさないようにするための原則(ルール)」と「既存のstaticメソッドが妨げになっているケースの解決方法」を示す。 レガシーコードに対して、はじめて単体テストを書くとき向けの記事。 問題 下記のLegacyService#execute()のようなメソッドに対して、うまく単体テストを書くことができない。 テスト対象メソッドから呼び出されているloadFromDatabaseメソッドがデータベースへのアクセスを必要とするため、アクセスが不可能な環境から実行した際には、例外が発生してしまう。 仮にデータベースへのアクセスが可能だったとしても、そのデータベースから安定して同じデータを取得することは難しく、また実行時間がかかってしまう。 pu

    Java: 単体テストを書くためにstaticメソッドから脱却しよう #1 原則・ラップメソッド - Qiita
  • Java: 単体テストを書くためにstaticメソッドから脱却しよう #2 DI(Dependency Injection) - Qiita

    Java: 単体テストを書くためにstaticメソッドから脱却しよう #2 DI(Dependency Injection)JavaJUnit 概要 前回の単体テストを書くためにstaticメソッドから脱却しよう #1 原則・ラップメソッドでは、下記の2点を説明した。 実行環境により結果が変わるメソッドをstaticにしてはいけない 原則を破っている既存コードも、ステップを分けて影響範囲を小さくしながら修正できる たとえば、メソッドをラップすることで解決できる 今回の記事では、既存コードを修正するための他の方法として、他のクラスのstaticメソッドを呼び出している場合を例に、DI(Dependency Injection - 依存性の注入)という手法を紹介する。 なお、この記事では、Spring FrameworkなどのDIコンテナのフレームワークには言及しない。 問題 下記のLegac

    Java: 単体テストを書くためにstaticメソッドから脱却しよう #2 DI(Dependency Injection) - Qiita
  • 1