LoginSignup
2
3

More than 5 years have passed since last update.

UnityTestRunnerを導入してT・D・D入門してみる

Last updated at Posted at 2019-02-13

はじめに

T・D・D!
T・D・D!

USA的なノリでTDDしてみよう。
あと@t_wadaさんっていうライオンにも怒られるらしいのでテスト書いていきましょう
a94dd56d.png (600×315)

TDDが何とかどうしてやる必要があるのかとかはwikipediaあたりを見てください。

環境
Unity 2018.3.4f1

参考

Unity使いは全員Unity Test Runnerを使え!爆速のトライ&エラー環境だぞ! - Qiita
Unityでちゃんとテストを書きたい人のためのまとめ - Qiita
Unity Test Runner - Unity マニュアル
Unityテスト完全に理解した(実機、自動、利のあるテストに食らいつく話) - Speaker Deck

上記リンクを参考にしてUnityで動作するテストコードを書いていきます。

やったこと

まず最初に失敗するテストを書きます。
最初にUnityTestRunnerを起動してテストコード保存フォルダ、スクリプト作成ボタンを押していってシンプルなテストコードだけ記述されたスクリプトを作成します。
その追加されたクラスの中に、とりあえずこんなバカみたいに必ず失敗するコードを書いてみます

// バカみたいに失敗するテスト
[Test]
public void NewTestScriptSimpleRun()
{
    Assert.IsTrue(false);
}

UnityTestRunnerでテストを走らせます。
UnityTestRunnerFailedShot.png (438×191)

はい、見事に追加したコードだけ失敗しました。やったね。
コンソールには下記のようなエラーが出ます。

Assertion failure. Value was False
Expected: True
UnityEngine.Assertions.Assert:IsTrue(Boolean)
kt.Tests.NewTestScript:NewTestScriptSimpleRun() (at Assets/Tests/NewTestScript.cs:26)
System.Reflection.MethodBase:Invoke(Object, Object[])
NUnit.Framework.Internal.Reflect:InvokeMethod(MethodInfo, Object, Object[])
NUnit.Framework.Internal.MethodWrapper:Invoke(Object, Object[])
NUnit.Framework.Internal.Commands.TestMethodCommand:RunNonAsyncTestMethod(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestMethodCommand:RunTestMethod(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestMethodCommand:Execute(ITestExecutionContext)
NUnit.Framework.Internal.Commands.TestActionCommand:Execute(ITestExecutionContext)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

ちゃんと意図通りにテストが失敗することを確認したら、今度は成功するコードを書きます。
とりあえずバカみたいに成功するコードを書いてみます。

// バカみたいに成功するテスト
[Test]
public void NewTestScriptSimpleRun()
{
    Assert.AreEqual(2, 1+1);
}

UnityTestRunnerSuccessShot.jpg (460×231)

成功しました。今回は中身に意味のないコードですが、

実装→失敗するテスト→機能するテスト→コードの拡張→失敗するテスト→機能するテスト→・・・

上記を繰り返すことで多くのテストが行われ、保守性の高くモジュール化されたコードが書けると思います。
ちゃんと意味のあるテストコードを書いていく場合、上述した参考リンク先を元にテスト機能を拡充していけばいいかなと思います。

今回のサンプルのリポジトリは下記です。
KTA552/UnityTestRunnerTrial

2
3
0

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
2
3