Unityのテストコードについて
初めてUnityでのテストコードを学びましたので、備忘録として残します。
Unityプロジェクトの作成
テスト開発するためにUnityプロジェクトを新規作成します。
Unity Test Ruuner の活用
Unityの標準で搭載されているテストツールです。
Unityのメニュー画面からWindow>General>Test Runnerで開くことが出来ます。
テスト方法には2つの方法があります。
Playモード:実際にバックグラウンドでアプリを起動しながらテストします。
Editモード:別途Editモード用のファイルを追加してテストできます。 テスト時のアプリ起動はしません。
テストするファイルを作成
テストしたいファイルを用意しておきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
private void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(this.gameObject);
}
else
{
Destroy(this.gameObject);
}
}
//--シングルトン終わり--
public AudioSource audioSourceBGM; //BGMのスピーカー
public AudioClip[] audioClipsBGM; //BGMの素材 (0:Title, 1:Town, 2:Quest, 3:Battle)
public AudioSource audioSourceSE; //SEのスピーカー
public AudioClip[] audioClipsSE; //ならす素材
private string v;
public SoundManager(string v)
{
this.v = v;
}
public void StopBGM()
{
audioSourceBGM.Stop();
}
public void StopSE()
{
audioSourceSE.Stop();
}
// Start is called before the first frame update
void Start()
{
PlayBGM("Title");
}
public void PlayBGM(string sceneName)
{
audioSourceBGM.Stop();
switch (sceneName)
{
default:
case "Title":
audioSourceBGM.clip = audioClipsBGM[0];
break;
case "Town":
audioSourceBGM.clip = audioClipsBGM[1];
break;
case "Quest":
audioSourceBGM.clip = audioClipsBGM[2];
break;
case "Battle":
audioSourceBGM.clip = audioClipsBGM[3];
break;
}
audioSourceBGM.Play();
}
public void PlaySE(int index)
{
audioSourceSE.PlayOneShot(audioClipsSE[index]); //SEを一度鳴らす
this.count = 0;
}
public int count { get; private set; }
public int GetName() { return this.count; }
}
バックグランドBGMの設定やボタンクリック時に音が鳴る設定をしています。
ボタンが鳴るときにPlaySEが起動するのですが、その時にカウントに0を代入するようにしています。
テストコードの作成
テストするためのコードを記述します。
TestRunnerの画面からTestsフォルダを作成してテストファイルを作成します。
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
namespace Tests
{
public class NewTestScript
{
// A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use
// `yield return null;` to skip a frame.
[UnityTest]
public IEnumerator SoundManagerTest()
{
var x = new SoundManager("count");
//start()
Assert.AreEqual(0,x.GetName());
yield return null;
}
}
}
countの値と予測値を比べて正しければテストが通るようにしています。
テスト
テストコードを記述したら、テストします。
今回はPlayモードで実行しています。
左上のRun Allでテストを実行します。
結果が正しければすべて緑のチェックがつきます。
まとめ
Unityでテスト開発するための手順を書きました。
PlayモードとEditモードの選択ができるので、必要に応じて使い分けてください。
テストするファイルの用意とテストコードを用意する必要があります。
Author And Source
この問題について(Unityのテストコードについて), 我々は、より多くの情報をここで見つけました https://qiita.com/Riahz/items/d5c11a03512e741365aa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .