Unity Test Toolsでのテストケースのカテゴリ分け

2016年1月29日

Unity Test Tools を使って、15000 行くらいのテストコードを書いてみました。
true か false か、くらいのテストしか実装していないので、Unity Test Tools を使いこなせていない感がすごいです。
そこで、もう少し勉強しようと思います。

Unity Test Tools の導入については、「Unity Test Toolsを使ってみる」をご参照ください。

Unity Test Tools は、NUnit.Framework を使用しています。
NUnit としての詳細な使い方についてはここでは触れません。
といいますか、私よりもっと詳しい方がたくさんまとめてくださっていますので、そちらをご参照ください。
ここでは、Unity からみてどのように動作するか、についてまとめていきます。

とりあえず、手始めにテストケースのカテゴリ分けについてです。

Category 属性とは

Unity Test Tools では、クラスやメソッドに Category 属性を付けることができます。
これを付けることで、テストを実施する項目をカテゴリごとに切り替えたり選択できるようになります。

以下のように Category 属性を設定します。

namespace UnitTest
{
    [TestFixture]
    [Category("My Unit Tests")]
    class SampleUnitTest
    {
        [Test]
        public void TestSampleSuccess ()
        {
        }
    }
}

Unit Tests のカテゴリーメニューに、Category に指定した文字列が追加されます。

20151023_utt_01

クラスにカテゴリを付ける

以下のようにクラス宣言をしておくと、Unit Tests で表示および実行するテストをカテゴリーごとに選択できるようになります。

namespace UnitTest
{
    [TestFixture]
    [Category("My Tests")]
    class MyUnitTest
    {
        [Test]
        public void TestSampleSuccess ()
        {
        }
    }

    [TestFixture]
    [Category("Your Tests")]
    class YourUnitTest
    {
        [Test]
        public void TestSampleSuccess ()
        {
        }
    }

    [TestFixture]
    [Category("Other Tests")]
    class OtherUnitTest
    {
        [Test]
        public void TestSampleSuccess ()
        {
        }
    }
}

この状態で、カテゴリーを選択していないと以下のように表示されます。

20151023_utt_02

カテゴリーを「My Tests」に切り替えると、このようになります。

20151023_utt_03

さらに、複数選択ができます。
複数選択時は、カテゴリ名の表示が「Mixed …」に変わります。

20151023_utt_04

クラス名やメソッド名と別に名称が付けられるので、とても便利です。
カテゴリ名の表示領域をリサイズできないので、メニューを開かないと確認できないのがちょっと面倒ですが、先頭に数字を振るなどして目印を付けておけば問題ないでしょう。

ちなみにカテゴリ名には、日本語を設定することもできます。

20151023_utt_05

メソッドにカテゴリを付ける

メソッドにカテゴリを設定する場合も、クラスと同様に宣言の手前に記述します。

namespace UnitTest
{
    [TestFixture]
    [Category("My Tests")]
    class MyUnitTest
    {
        [Test]
        [Category("これやりたい")]
        public void TestSample1 ()
        {
        }

        [Test]
        public void TestSample2 ()
        {
        }
    }

    [TestFixture]
    [Category("Your Tests")]
    class YourUnitTest
    {
        [Test]
        public void TestSample3 ()
        {
        }

        [Test]
        [Category("これやりたい")]
        public void TestSample4 ()
        {
        }
    }
}

このようにしてから、カテゴリで「これやりたい」を選択すると、このようになります。

20151023_utt_06

実施するテストを、より細かく分類できます。
クラス間を跨いでいても問題ないので、正常系だけやりたい、負荷テストだけやりたい、などの分類がやりやすいです。

また、カテゴリを複数設定することもできます。

namespace UnitTest
{
    [TestFixture]
    [Category("My Tests")]
    class MyUnitTest
    {
        [Test]
        [Category("これやりたい")]
        [Category("それやりたい")]
        public void TestSample1 ()
        {
        }

        [Test]
        [Category("それやりたい")]
        public void TestSample2 ()
        {
        }
    }

    [TestFixture]
    [Category("Your Tests")]
    class YourUnitTest
    {
        [Test]
        [Category("それやりたい")]
        [Category("あれやりたい")]
        public void TestSample3 ()
        {
        }

        [Test]
        [Category("これやりたい")]
        public void TestSample4 ()
        {
        }
    }
}

このように、設定した属性をそれぞれ認識します。

20151023_utt_07

真面目にまとめ出すととても量が多いので、今回はカテゴリでできることだけ簡単にまとめました。
テスト書く前にもっと勉強しておくべきだった。

おしまい。

スポンサーリンク