|
|
連載:VSTSの単体テスト機能は本当に使えるのか?
第2回 アジャイル開発者から見たVSTSテスト機能
太陽システム株式会社 中西 庸文
(Microsoft MVP 2006 - Solutions Architect)
2006/09/20 |
|
|
6. コレクション比較を行うためのアサーション
最後に、コレクション比較を行うためのアサーションの使い方を見てみよう。
using System;
using System.Collections;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MSTestStudy.Tests
{
[TestClass]
public class CollectionAssertTest
{
[TestMethod]
public void コレクションのすべての要素の同型チェックが成功すべき()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
CollectionAssert.AllItemsAreInstancesOfType(list, typeof(int));
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションのすべての要素の同型チェックが失敗すべき()
{
ArrayList list = new ArrayList();
list.Add(1);
list.Add("Test");
CollectionAssert.AllItemsAreInstancesOfType(list, typeof(int));
}
[TestMethod]
public void 要素がない場合はコレクションのすべての要素の同型チェックが成功すべき()
{
CollectionAssert.AllItemsAreInstancesOfType(new List<int>(), typeof(int));
}
[TestMethod]
public void コレクションのすべての要素の非nullチェックが成功すべき()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
CollectionAssert.AllItemsAreNotNull(list);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションのすべての要素の非nullチェックが失敗すべき()
{
ArrayList list = new ArrayList();
list.Add(null);
CollectionAssert.AllItemsAreNotNull(list);
}
[TestMethod]
public void 要素がない場合はコレクションのすべての要素の非nullチェックが成功すべき()
{
CollectionAssert.AllItemsAreNotNull(new List<int>());
}
[TestMethod]
public void コレクションのすべての要素の一意チェックが成功すべき()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
CollectionAssert.AllItemsAreUnique(list);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションのすべての要素の一意チェックが失敗すべき()
{
List<int> list = new List<int>();
list.Add(1);
list.Add(1);
CollectionAssert.AllItemsAreUnique(list);
}
[TestMethod]
public void 要素がない場合はコレクションのすべての要素の一意チェックが成功すべき()
{
CollectionAssert.AllItemsAreUnique(new List<int>());
}
[TestMethod]
public void コレクションの同値チェックが成功すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(1);
actual.Add(2);
CollectionAssert.AreEqual(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションの同値チェックが失敗すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(1);
CollectionAssert.AreEqual(expected, actual);
}
[TestMethod]
public void 要素がない場合はコレクションの同値チェックが成功すべき()
{
CollectionAssert.AreEqual(new List<int>(), new List<int>());
}
[TestMethod]
public void コレクションの異値チェックが成功すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(1);
CollectionAssert.AreNotEqual(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションの異値チェックが失敗すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(1);
actual.Add(2);
CollectionAssert.AreNotEqual(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void 要素がない場合はコレクションの異値チェックが失敗すべき()
{
CollectionAssert.AreNotEqual(new List<int>(), new List<int>());
}
[TestMethod]
public void コレクションに同じ要素が含まれているかのチェックが成功すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(1);
CollectionAssert.AreEquivalent(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションに同じ要素が含まれているかのチェックが失敗すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(3);
CollectionAssert.AreEquivalent(expected, actual);
}
[TestMethod]
public void 要素がない場合はコレクションに同じ要素が含まれているかのチェックが成功すべき()
{
CollectionAssert.AreEquivalent(new List<int>(), new List<int>());
}
[TestMethod]
public void コレクションに異なる要素が含まれているかのチェックが成功すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(3);
CollectionAssert.AreNotEquivalent(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションに異なる要素が含まれているかのチェックが失敗すべき()
{
List<int> expected = new List<int>();
expected.Add(1);
expected.Add(2);
List<int> actual = new List<int>();
actual.Add(2);
actual.Add(1);
CollectionAssert.AreNotEquivalent(expected, actual);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void 要素がない場合はコレクションに異なる要素が含まれているかのチェックが失敗すべき()
{
CollectionAssert.AreNotEquivalent(new List<int>(), new List<int>());
}
[TestMethod]
public void コレクションの要素有チェックが成功すべき()
{
ArrayList list = new ArrayList();
list.Add(1);
CollectionAssert.Contains(list, 1);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションの要素有チェックが失敗すべき()
{
List<int> list = new List<int>();
list.Add(1);
CollectionAssert.Contains(list, 2);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void 要素がない場合はコレクションの要素有チェックが失敗すべき()
{
CollectionAssert.Contains(new List<int>(), 1);
}
[TestMethod]
public void コレクションの要素無チェックが成功すべき()
{
List<int> list = new List<int>();
list.Add(1);
CollectionAssert.DoesNotContain(list, 2);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションの要素無チェックが失敗すべき()
{
List<int> list = new List<int>();
list.Add(1);
CollectionAssert.DoesNotContain(list, 1);
}
[TestMethod]
public void 要素がない場合はコレクションの要素無チェックが成功すべき()
{
CollectionAssert.DoesNotContain(new List<int>(), 1);
}
[TestMethod]
public void コレクションが別のコレクションのサブセットかどうかのチェックが成功すべき()
{
List<int> subset = new List<int>();
subset.Add(1);
subset.Add(3);
List<int> superset = new List<int>();
superset.Add(1);
superset.Add(2);
superset.Add(3);
CollectionAssert.IsSubsetOf(subset, superset);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションが別のコレクションのサブセットかどうかのチェックが失敗すべき()
{
List<int> subset = new List<int>();
subset.Add(1);
subset.Add(4);
List<int> superset = new List<int>();
superset.Add(1);
superset.Add(2);
superset.Add(3);
CollectionAssert.IsSubsetOf(subset, superset);
}
[TestMethod]
public void 要素がない場合はコレクションが別のコレクションのサブセットかどうかのチェックが成功すべき()
{
CollectionAssert.IsSubsetOf(new List<int>(), new List<int>());
}
[TestMethod]
public void コレクションが別のコレクションのサブセットでないかどうかのチェックが成功すべき()
{
List<int> subset = new List<int>();
subset.Add(1);
subset.Add(4);
List<int> superset = new List<int>();
superset.Add(1);
superset.Add(2);
superset.Add(3);
CollectionAssert.IsNotSubsetOf(subset, superset);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void コレクションが別のコレクションのサブセットでないかどうかのチェックが失敗すべき()
{
List<int> subset = new List<int>();
subset.Add(1);
subset.Add(3);
List<int> superset = new List<int>();
superset.Add(1);
superset.Add(2);
superset.Add(3);
CollectionAssert.IsNotSubsetOf(subset, superset);
}
[TestMethod]
[ExpectedException(typeof(AssertFailedException))]
public void 要素がない場合はコレクションが別のコレクションのサブセットでないかどうかのチェックが失敗すべき()
{
CollectionAssert.IsNotSubsetOf(new List<int>(), new List<int>());
}
}
}
|
|
コレクション比較のアサーションの使い方を学習するために記述したテスト・コード |
このようにVSTSのテスティング・フレームワークにはコレクションを比較するためのアサーションを数多く持つCollectionAssertクラスが用意されているが、NUnitにはコレクションを比較するためのクラスは存在しない。
ただし、次期バージョンであるNUnit 2.4のBeta 1 ReleaseではVSTSのテスティング・フレームワークと同等のCollectionAssertクラスや、ファイルを比較するためのFileAssertクラスなども用意されているようだ。
ここで少し補足しておくと、NUnitのAssertクラスには大小比較のためのアサーションを行うGreaterメソッドとLessメソッドや、ユーティリティ・メソッドとしてテスト・メソッド中でそれ以降の行の実行をスキップさせるIgnoreメソッドなども用意されているが、VSTSのテスティング・フレームワークにはこれらと同等のものは存在しない。
Insider.NET 記事ランキング
本日
月間