UnityTestでTestCaseSourceを使う

TestCaseSourceはテストケースのデータをメソッドで引き渡す方法。

メソッドはプロパティでも構わないけど、staticで宣言する必要がある。


テスト内容は実際使ったものをそのまま載せました。

        [UnityTest]
        [TestCaseSource(nameof(Datas))]
        public IEnumerator すでに同じシンボルオブジェクトがあったら作らない(ISymbol symbol)
        {
            _resolver.InstantiateSymbol(symbol,_symbolParent);
            _resolver.InstantiateSymbol(symbol,_symbolParent);
            Assert.That(_symbolParent.childCount,Is.EqualTo(1));
            yield return null;
        }

        static IEnumerable<object> Datas()
        {
            MidiFile file = Addressables.LoadAssetAsync<MidiObject>("LongMusicSingleChannel").WaitForCompletion()
                .CreateMidiFile();
            var longData = new ScoreData(file);
            foreach (var symbol in longData.Symbols)
            {
                yield return new TestCaseData(symbol).Returns(null);
            }
        }

戻り値のあるテストケースは期待される戻り値を知らせる必要があるらしい。

この場合はnullを返すことをテストに知らせる。

重要なのは、

yield return new TestCaseData(symbol).Returns(null);

でTestCaseDataオブジェクトでテストしたい引数を設定した後に、Returnsで戻り値がnullであることを書いておく必要があるみたい。

コメント

タイトルとURLをコピーしました