NUnit 2.4.2(^o^)

NUnit 2.4がリリースされた際に作成したLearningTestがあったので、変更点はすぐわかった。

NUnit 2.4.1ではテスト記述に大きく影響する変更は無かったが、今回はList.Containsが使用できなくなっているのと、PropertyConstraintとListMapperの追加が大きな変更点かな。あと2.4.1まで残っていたIs.Not.EqualTo(*).Within(*)とIs.Not.EqualTo(*).AsCollectionのバグが修正されている。

以下にList.Containsの代わりとなる新しい記述方法およびPropertyConstraintとListMapperのLearningTestを書いておく。

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;

namespace LearningNUnit.Tests.ConstraintModel
{
    [TestFixture]
    public class CollectionConstraintsTest
    {
        ...

        [Test]
        public void 要素含有制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);
            Assert.That(list, Has.Member(1));
            Assert.That(list, Has.Member(2));
        }

        [Test]
        public void Someを使用した要素含有制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);
            Assert.That(list, Has.Some.EqualTo(1));
            Assert.That(list, Has.Some.EqualTo(2));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void 要素含有制約が失敗すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);
            Assert.That(list, Has.Member(3));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void Someを使用した要素含有制約が失敗すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);
            Assert.That(list, Has.Some.EqualTo(3));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void 要素がない場合は要素含有制約が失敗すべき()
        {
            Assert.That(new List<int>(), Has.Member(0));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void 要素がない場合はSomeを使用した要素含有制約が失敗すべき()
        {
            Assert.That(new List<int>(), Has.Some.EqualTo(0));
        }

        #region 2.4.2から廃止された

        //[Test]
        //public void 要素含有制約が成功すべき()
        //{
        //    List<int> list = new List<int>();
        //    list.Add(1);
        //    list.Add(2);
        //    Assert.That(list, List.Contains(1));
        //    Assert.That(list, List.Contains(2));
        //}

        //[Test]
        //[ExpectedException(typeof(AssertionException))]
        //public void 要素含有制約が失敗すべき()
        //{
        //    List<int> list = new List<int>();
        //    list.Add(1);
        //    list.Add(2);
        //    Assert.That(list, List.Contains(3));
        //}

        //[Test]
        //[ExpectedException(typeof(AssertionException))]
        //public void 要素がない場合は要素含有制約が失敗すべき()
        //{
        //    Assert.That(new List<int>(), List.Contains(0));
        //}

        #endregion

        [Test]
        public void 要素非含有制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.No.Member(2));
        }

        [Test]
        public void Noneを使用した要素非含有制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.None.EqualTo(2));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void 要素非含有制約が失敗すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.No.Member(1));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void Noneを使用した要素非含有制約が失敗すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.None.EqualTo(1));
        }

        [Test]
        public void 要素がない場合は要素非含有制約が成功すべき()
        {
            Assert.That(new List<int>(), Has.No.Member(0));
        }

        [Test]
        public void 要素がない場合はNoneを使用した要素非含有制約が成功すべき()
        {
            Assert.That(new List<int>(), Has.None.EqualTo(0));
        }

        #region 2.4.2から廃止された

        //[Test]
        //public void 要素非含有制約が成功すべき()
        //{
        //    List<int> list = new List<int>();
        //    list.Add(1);
        //    Assert.That(list, List.Not.Contains(2));
        //}

        //[Test]
        //[ExpectedException(typeof(AssertionException))]
        //public void 要素非含有制約が失敗すべき()
        //{
        //    List<int> list = new List<int>();
        //    list.Add(1);
        //    Assert.That(list, List.Not.Contains(1));
        //}

        //[Test]
        //public void 要素がない場合は要素非含有制約が成功すべき()
        //{
        //    Assert.That(new List<int>(), List.Not.Contains(0));
        //}

        #endregion

        ...
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;

namespace LearningNUnit.Tests.ConstraintModel
{
    /// <summary>
    /// 2.4.2 で追加された
    /// </summary>
    [TestFixture]
    public class PropertyConstraintTest
    {
        [Test]
        public void プロパティ存在制約が成功すべき()
        {
            Assert.That(new List<int>(), Has.Property("Count"));
        }

        [Test]
        [ExpectedException(typeof(NullReferenceException))]
        public void プロパティ存在制約が失敗すべき()
        {
            Assert.That(new List<int>(), Has.Property("Length"));
        }

        [Test]
        public void プロパティの戻り値取得の制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.Property("Count", 1));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void プロパティの戻り値取得の制約が失敗すべき()
        {
            List<int> list = new List<int>();
            Assert.That(list, Has.Property("Count", 1));
        }

        [Test]
        public void 配列のLengthプロパティ取得の制約が成功すべき()
        {
            int[] array = new int[] { 1, 2, 3 };
            Assert.That(array, Has.Length(3));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void 配列のLengthプロパティ取得の制約が失敗すべき()
        {
            int[] array = new int[] { 1, 2, 3 };
            Assert.That(array, Has.Length(0));
        }

        [Test]
        public void コレクションのCountプロパティ取得の制約が成功すべき()
        {
            List<int> list = new List<int>();
            list.Add(1);
            Assert.That(list, Has.Count(1));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void コレクションのCountプロパティ取得の制約が失敗すべき()
        {
            List<int> list = new List<int>();
            Assert.That(list, Has.Count(1));
        }

        [TestFixture]
        public class WithHelper : AssertionHelper
        {
            [Test]
            public void プロパティ存在制約が成功すべき()
            {
                Expect(new List<int>(), Has.Property("Count"));
            }

            [Test]
            public void プロパティの戻り値取得の制約が成功すべき()
            {
                List<int> list = new List<int>();
                list.Add(1);
                Expect(list, Has.Property("Count", 1));
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;

namespace LearningNUnit.Tests.ConstraintModel
{
    /// <summary>
    /// 2.4.2 で追加された
    /// </summary>
    [TestFixture]
    public class ListMapperTest
    {
        [Test]
        public void ListMapperを使用して元コレクションの各子要素のプロパティ取得が成功すべき()
        {
            List<string> list = new List<string>();
            list.Add("a");
            list.Add("ab");
            list.Add("abc");
            List<int> lengthList = new List<int>();
            lengthList.Add(1);
            lengthList.Add(2);
            lengthList.Add(3);
            Assert.That(List.Map(list).Property("Length"), Is.EqualTo(lengthList));
        }

        [Test]
        [ExpectedException(typeof(AssertionException))]
        public void ListMapperを使用して元コレクションの各子要素のプロパティが失敗すべき()
        {
            List<string> list = new List<string>();
            list.Add("a");
            list.Add("ab");
            list.Add("abcdefg");
            List<int> lengthList = new List<int>();
            lengthList.Add(1);
            lengthList.Add(2);
            lengthList.Add(3);
            Assert.That(List.Map(list).Property("Length"), Is.EqualTo(lengthList));
        }

        [TestFixture]
        public class WithHelper : AssertionHelper
        {
            [Test]
            public void ListMapperを使用して元コレクションの各子要素のプロパティ取得が成功すべき()
            {
                List<string> list = new List<string>();
                list.Add("a");
                list.Add("ab");
                list.Add("abc");
                List<int> lengthList = new List<int>();
                lengthList.Add(1);
                lengthList.Add(2);
                lengthList.Add(3);
                Expect(List.Map(list).Property("Length"), Is.EqualTo(lengthList));
            }
        }
    }
}

via:NUnit 2.4.2でました