LoginSignup
20
15

More than 1 year has passed since last update.

Unityでも単体テストを書こう!

Last updated at Posted at 2022-06-19
1 / 30

謝罪

社内勉強会向けのスライドをQiitaに移植したものです。
レイアウトが崩れている箇所がございますが、何卒ご了承下さい。


Unityエンジニアへ


単体テストを一緒に書こうぜ!!


こんな経験ありませんか?

バグを1つ修正したら、
今までちゃんと動いていた別の箇所がバグった!


バグを直すと別の箇所がバグる

image.png

※矢印はクラスの参照を表します。

B君とC君の都合を考えてからA君を修正すればいいの?


現実はもっと複雑・・・

様々な登場人物が複雑に参照しあっている。

image.png

すべての登場人物の都合を考えるのは無理!!


勝手な変更されないように単体テストを作って監視しよう

image.png

単体テストを作ってクラスの動作を保証しよう!


単体テストを書こう!


Unityで単体テストを書くには?


asmdefがないとUnityで単体テストが導入できない

image.png


asmdefがあればUnityで単体テストが導入できる!

image.png

asmdefを導入しよう!


asmdef(AssemblyDefinition)とは?

Unityでは、C#ファイルのまとまりをアセンブリと定義することができる。

Unityにおけるアセンブリとは?

  • C言語でいう .so , .lib
  • .NETでいう .dll
  • Javaでいう .jar

のようなもの


asmdefを導入しよう!


参照先が対応していないと参照元が対応できない

image.png


参照先が対応していないと参照元が対応できない

image.png


参照先が対応していないと参照元が対応できない

image.png

末端からasmdefを導入しよう!


末端から少しずつasmdefを導入しよう!


現実はもっともっと複雑・・・

image.png

末端はどこ?


参照方向をそろえよう!

image.png

泥臭い作業が必要だけど、参照方向をそろえよう!


参照方向をどうやってそろえるの?

大変だけど様々な方法を駆使すればできます!

  • 依存性逆転の原則
  • 依存性の注入

詳しくはググってください


すごく大変そうだけどそこまでやる価値あるの?


やる価値あります!


単体テストなし vs あり

image.png


プログラマーの学習コストが大幅に下がります!


学習コストが下がれば多人数開発がしやすくなります


多人数開発ができれば製品の開発スピードが向上します


これがいわゆる疎結合!


泥臭い作業が必要なのは自分の代だけ!

(ババ引いたとか言わないで)


単体テストを書こう!

20
15
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
15