本セッションでは、どんな複雑なKotlinプロジェクトも、「関数」と「命令」の二つに分類することでテスト可能性を向上させる洞察を得ることができることを示します。
外部システムに依存しないロジックは「関数」として表現し、JUnitなどの軽量なテストフレームワークで徹底的なテストを行い、一方で外部システムとの相互作用や副作用を伴う操作は「命令」として捉え、最小限のMockフレームワークを利用し振る舞いを検証します。
Kotlinの強力な型システム(Null安全、Sealed Class/Interfaceなど)は、この設計戦略を強力にサポートします。コンパイルの段階で状態やイベントを網羅的に表現し、「関数」の純粋性を保証し、安全なリファクタリングを可能にします。
本セッションでは、Kotlinの強力な型システムと単体テストのアプローチを駆使して複雑なシステムを紐解いていく術を紹介します。