モック主義者
目次
「単体テストの考え方/使い方」 (Vladimir, (2022)) を読んでいて驚いたことのひとつが、「モック主義者」という概念でした。自分もモック主義者の持つ信条を持っていたので、知らない間に何らかの派閥に入ってしまっていたことに気付いたためです。
モック主義者とは、単体テストに関する2つの派閥、古典学派とロンドン学派のうち、ロンドン学派に属するプログラマーを指します。これらの学派はユニットテストにおいて「何を隔離するのか?」という点について考えを異にするグループです。
ロンドン学派は、テスト対象システムから協力者オブジェクトを隔離し、すべての依存をテストダブルに置き換えます。一方で古典学派は、テストケースが互いに影響しないよう、テストケースを隔離します。テストダブルも使用しますが、使い方はロンドン学派と比べて限定的です。こちらは「デトロイト学派」とも呼ばれることがあります (Tom, (2023)) 。
「Good Code, Bad Code 持続可能な開発のためのソフトウェアエンジニア的思考」 (Tom, (2023)) では、古典学派とロンドン学派の特徴を以下のように示しています。
- 古典学派
- テストにおいて、プロダクションの依存関係を用いることを優先すべき
- その次に優先するのはフェイク
- モックとスタブの使用は最小限にし、プロダクションの依存関係とフェイクを使用できない場合の最終手段
- ロンドン学派
- テストにおいて、プロダクションの依存関係を用いることを避け、モックを使うべき
自分は、単体テストはテスト対象となるクラスをその依存先から隔離すべきであると考えており、基本的にすべての依存をテストダブルに置き換えることを目指していました。いつ・どこでこの考え方を持ったのかは思い出せませんが、知らない間にロンドン学派の考え方をしていたようです。
「単体テストの考え方/使い方」を読んで、それとは異なる考え方があるということを学ぶことができ、視野を広げることができたのは僥倖でした。今後、単体テストに関する考え方をアップデートしていきたいと思います。
References
- Vladimir Khorikov, (2022), 単体テストの考え方/使い方 プロジェクトの持続可能な成長を実現するための戦略, マイナビ出版
- Tom Long, (2023), Good Code, Bad Code 持続可能な開発のためのソフトウェアエンジニア的思考, 秀和システム
書いている人 😎

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。
👉 もっと詳しく
著書 ✍
ソフトウェアデザイン 2023年6月号📚
特集「クリーンアーキテクチャとは何か?」の第5章「モバイルアプリ開発における実践」を執筆しました。
Android クリーンアーキテクチャ ヒッチハイク・ガイド🧳
Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。
Android ユニットテスト ヒッチハイク・ガイド🧳
Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。
Android MVVMアーキテクチャ入門🛠
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。
関連記事 👀
- Truthのカスタムサブジェクトを定義する
- 「単体テストの考え方 / 使い方」を読みました
- Mockk によるモック入門
- Truth によるアサーション入門
- 「Android ユニットテスト ヒッチハイク・ガイド」を頒布します