モック主義者

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