Unity 5.6にアップデートしたらUnitTestが動作しなかったときの対応

ヨメレバCSS
オリジナルCSS

 Unit 5.6がリリースされて入れてみたらエラーになったときの話。

スポンサーリンク
GoogleAdSence レクタングル(大)

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);
    }

参考:TestCase Attribute

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」に変更すれば問題ありません。

 今は警告で済んでいますが、いずれ消えるかもしれない兆候なので、早めに変えておくに越したことはないでしょう。

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)