Unit 5.6がリリースされて入れてみたらエラーになったときの話。
NUnit3になっていた
Unityのインストールディレクトリ以下にある、「Editor\Data\Managed\nunit.framework.dll」のプロパティから詳細を見ると、NUnit3になっていました。
Unit 5.5まではNUnit2だったのですが、NUnit3に変更されたようです。Unit5、ラストリリースというこのタイミングで…いやむしろ、だからか。
よってUnitTestの書き方も、NUnit3系に習う必要があります。
NUnit3系のドキュメントは、NUnit Documentation Wikiにあります。
TestCaseにResultは使用できなくなっていた
TestCaseにおいて正しい結果を照合するためのResultパラメータがNUnit3では消えていました。
Resultを使った、
[TestCase(1, 2, Result=3)] public int SumTest(int a, int b) { return (a + b); }
のようなテストを書いていると、「error CS0117: `NUnit.Framework.TestCaseAttribute' does not contain a definition for `Result'」が大量に発生しました…
対応としては、「Resultを ExpectedResultに変える」ようにします。
[TestCase(1, 2, ExpectedResult=3)] public int SumTest(int a, int b) { return (a + b); }
TestFixtureSetUpAttribute、 TestFixtureTearDownAttributeは廃止(obsolete)されていた
TestFixtureSetUp属性を使用していると
「 warning CS0618: `NUnit.Framework.TestFixtureSetUpAttribute' is obsolete: `Use OneTimeSetUpAttribute'」、
TestFixtureTearDown属性を使用していると
「 warning CS0618: `NUnit.Framework.TestFixtureTearDownAttribute' is obsolete: `Use OneTimeTearDownAttribute'」
が発生しました。
メッセージにあるように、それぞれ「OnetimeSetUp」「OneTimeTearDown」に変更すれば問題ありません。
今は警告で済んでいますが、いずれ消えるかもしれない兆候なので、早めに変えておくに越したことはないでしょう。