[NUnit] コレクションが空かどうかをテストする

NUnitでは、コレクションの内容が空かどうかをテストするために、以下のメソッドが用意されています。

メソッド 説明
CollectionAssert.IsEmpty(テストするコレクション) テストするコレクションの内容が空(Empty)の場合にテスト成功
CollectionAssert.IsNotEmpty(テストするコレクション) テストするコレクションの内容が空(Empty)ではない場合にテスト成功

VB.NETの例

<Test>
Public Sub コレクションの内容が空であることをテスト()
    Dim テストするコレクション As New List(Of String)

    テストするコレクション.AddRange(New String() {})
    CollectionAssert.IsEmpty(テストするコレクション)
End Sub

<Test>
Public Sub コレクションの内容が空ではないことをテスト()
    Dim テストするコレクション As New List(Of String)

    テストするコレクション.AddRange(New String() {"APPLE", "BANANA", "ORANGE"})
    CollectionAssert.IsNotEmpty(テストするコレクション)
End Sub

C#の例

[Test]
public void コレクションの内容が空であることをテスト()
{
    List<string> テストするコレクション = new List<string>();

    テストするコレクション.AddRange(new string[] { });

    CollectionAssert.IsEmpty(テストするコレクション);
}

[Test]
public void コレクションの内容が空ではないことをテスト()
{
    List<string> テストするコレクション = new List<string>();

    テストするコレクション.AddRange(new string[] { "APPLE", "BANANA", "ORANGE" });

    CollectionAssert.IsNotEmpty(テストするコレクション);
}

[NUnit] コレクションに指定された内容が含まれるかをテストする

NUnitでは、コレクションの内容に任意の値が含まれているかどうかをテストするために、以下のメソッドが用意されています。

メソッド 説明
CollectionAssert.Contains(実際の値, 含まれているべき値) 実際の値に含まれているべき値が存在する場合、テスト成功

VB.NETの例

<Test>
Public Sub コレクションに指定された内容が含まれるかをテスト()
    Dim 実際の値 As New List(Of String)
    Dim 含まれているべき値 As String = "BANANA"

    実際の値.AddRange(New String() {"APPLE", "BANANA", "ORANGE"})
    CollectionAssert.Contains(実際の値, 含まれているべき値)
End Sub

C#の例

[Test]
public void コレクションに指定された内容が含まれるかをテスト()
{
    List<string> 実際の値 = new List<string>();
    string 含まれているべき値 = "BANANA";

    実際の値.AddRange(new string[] { "APPLE", "BANANA", "ORANGE" });

    CollectionAssert.Contains(実際の値, 含まれているべき値);
}

[NUnit] コレクションの内容が昇順かをテストする

NUnitでは、 CollectionAssert.IsOrderdメソッドを使用して、コレクションの内容が昇順かどうかをテストすることができます。

使用例は以下の通りです。
(テストが成功する例と失敗する例です)

VB.NETの例

<Test>
Public Sub リスト内が容昇順かをテスト_成功例()
    Dim 昇順テスト対象リスト As New List(Of String)

    昇順テスト対象リスト.AddRange(New String() {"APPLE", "BANANA", "ORANGE"})
    CollectionAssert.IsOrdered(昇順テスト対象リスト)
End Sub

<Test>
Public Sub リスト内容が昇順かをテスト_失敗例()
    Dim 昇順テスト対象リスト As New List(Of String)

  '昇順ではないデータをセット
    昇順テスト対象リスト.AddRange(New String() {"ORANGE", "BANANA", "APPLE"})
    CollectionAssert.IsOrdered(昇順テスト対象リスト)
End Sub

C#の例

[Test]
public void リスト内容が昇順かをテスト_成功例()
{
    List<string> 昇順テスト対象リスト = new List<string>();

    昇順テスト対象リスト.AddRange(new string[] { "APPLE", "BANANA", "ORANGE" });

    CollectionAssert.IsOrdered(昇順テスト対象リスト);
}

[Test]
public void リスト内容が昇順かをテスト_失敗例()
{
    List<string> 昇順テスト対象リスト = new List<string>();

  // 昇順ではないデータをセット
    昇順テスト対象リスト.AddRange(new string[] { "ORANGE", "BANANA", "APPLE" });
    CollectionAssert.IsOrdered(昇順テスト対象リスト);
}

[NUnit] コレクションの内容が一致するかをテストする

NUnitではコレクションの内容が一致するかどうかをテストするために、以下のメソッドが用意されています。

メソッド 説明
CollectionAssert.AreEqual(期待するコレクション, テストするコレクション) 期待するコレクションと、テストするコレクションの内容および順番が一致している場合、テスト成功
CollectionAssert.AreNotEqual(期待するコレクション, テストするコレクション) 期待するコレクションと、テストするコレクションの内容および順番が一致していない場合、テスト成功

以下に使用例を示します。
(配列とリストでの使用例です)

VB.NETの例

 

<Test>
Public Sub 配列内容が一致するかをテスト()
    Dim 期待値() As String = {"APPLE", "ORANGE", "BANANA"}
    Dim 実際の値() As String = {"APPLE", "ORANGE", "BANANA"}

    CollectionAssert.AreEqual(期待値, 実際の値)
End Sub

<Test>
Public Sub 配列内容が不一致かをテスト()
    Dim 期待値() As String = {"APPLE", "ORANGE", "BANANA"}
    Dim 実際の値() As String = {"APPLE", "ORANGE", "BANANA", "STRAWBERRY"}

    CollectionAssert.AreNotEqual(期待値, 実際の値)
End Sub

<Test>
Public Sub リスト内容が一致するかをテスト()        
    Dim 期待値 As New List(Of String)
    Dim 実際の値 As New List(Of String)


    期待値.AddRange(New String() {"APPLE", "ORANGE", "BANANA"})
    実際の値.AddRange(New String() {"APPLE", "ORANGE", "BANANA"})

    CollectionAssert.AreEqual(期待値, 実際の値)
End Sub

<Test>
Public Sub リスト内容が不一致かをテスト()
    Dim 期待値 As New List(Of String)
    Dim 実際の値 As New List(Of String)

    期待値.AddRange(New String() {"APPLE", "ORANGE", "BANANA"})
    実際の値.AddRange(New String() {"APPLE", "ORANGE", "BANANA", "STARWBERRY"})

    CollectionAssert.AreNotEqual(期待値, 実際の値)
End Sub

C#の例

[Test]
public void 配列内容が一致するかをテスト()
{
    string[] 期待値 = new string[]{"APPLE", "ORANGE", "BANANA"};
    string[] 実際の値 = new string[]{"APPLE", "ORANGE", "BANANA"};

    CollectionAssert.AreEqual(期待値, 実際の値);
}

[Test]
public void 配列内容が不一致かをテスト()
{
    string[] 期待値 = new string[] { "APPLE", "ORANGE", "BANANA" };
    string[] 実際の値 = new string[] { "APPLE", "ORANGE", "BANANA", "STRAWBERRY" };

    CollectionAssert.AreNotEqual(期待値, 実際の値);
}

[Test]
public void リスト内容が一致するかをテスト()
{
    List<string> 期待値 = new List<string>();
    List<string> 実際の値 = new List<string>();

    期待値.AddRange(new string[] { "APPLE", "ORANGE", "BANANA" });
    実際の値.AddRange(new string[] { "APPLE", "ORANGE", "BANANA" });

    CollectionAssert.AreEqual(期待値, 実際の値);
}

[Test]
public void リスト内容が不一致かをテスト()
{
    List<string> 期待値 = new List<string>();
    List<string> 実際の値 = new List<string>();

    期待値.AddRange(new string[] { "APPLE", "ORANGE", "BANANA" });
    実際の値.AddRange(new string[] { "APPLE", "ORANGE", "BANANA", "STARWBERRY" });

    CollectionAssert.AreNotEqual(期待値, 実際の値);
}

[NUnit] ファイル内容が一致するかテストする

NUnitではファイル内容が一致するかをテストするために、以下のメソッドが用意されています。

  • FileAsert.AreEqual ファイル内容が一致している場合テスト成功
  • FileAsert.AreNotEqual ファイル内容が不一致の場合テスト成功

AreEqual, AreNotEqualメソッドは、複数のオーバーロードを持っています。
よく使用されると思われるものは以下の通りです。

オーバーロード 説明
FileAssert.AreEqual(期待する内容を持つファイルのパス文字列、テスト対象のファイルパス文字列) 「期待する内容を持つファイルのパス文字列」が指すファイルの内容と、「テスト対象のファイルパス文字列」が指すファイルの内容が一致する場合、テスト成功
FileAssert.AreEqual(期待する内容を持つファイルのFileInfoクラスのインスタンス、テスト対象のFileInfoクラスのインスタンス) 「期待する内容を持つファイルのFileInfoクラスのインスタンス」のファイルの内容と、「テスト対象のFileInfoクラスのインスタンス」が指すファイルの内容が一致する場合、テスト成功
FileAssert.AreNotEqual(期待する内容を持つファイルのパス文字列、テスト対象のファイルパス文字列) 「期待する内容を持つファイルのパス文字列」が指すファイルの内容と、「テスト対象のファイルパス文字列」が指すファイルの内容が不一致の場合、テスト成功
FileAssert.AreNotEqual(期待する内容を持つファイルのFileInfoクラスのインスタンス、テスト対象のFileInfoクラスのインスタンス) 「期待する内容を持つファイルのFileInfoクラスのインスタンス」のファイルの内容と、「テスト対象のFileInfoクラスのインスタンス」が指すファイルの内容が不一致の場合、テスト成功

以下に使用例を示します。

VB.NETの例

<Test>
Public Sub パス文字列を使用したファイル内容の一致テスト()

    Dim path1 As String = "C:\Work2\Test1.txt"
    Dim path2 As String = "C:\Work2\Test2.txt"

    FileAssert.AreEqual(path1, path2)
End Sub

<Test>
Public Sub パス文字列を使用したファイル内容の不一致テスト()

    Dim path1 As String = "C:\Work2\Test1.txt"
    Dim path2 As String = "C:\Work2\Test3.txt"

    FileAssert.AreNotEqual(path1, path2)
End Sub

<Test>
Public Sub FileInfoクラスを使用したファイル内容の一致テスト()

    Dim info1 As FileInfo = New FileInfo("C:\Work2\Test1.txt")
    Dim info2 As FileInfo = New FileInfo("C:\Work2\Test2.txt")

    FileAssert.AreEqual(info1, info2)
End Sub

<Test>
Public Sub FileInfoクラスを使用したファイル内容の不一致テスト()

    Dim info1 As FileInfo = New FileInfo("C:\Work2\Test1.txt")
    Dim info2 As FileInfo = New FileInfo("C:\Work2\Test3.txt")

    FileAssert.AreNotEqual(info1, info2)
End Sub

C#の例

[Test]
public void パス文字列を使用したファイル内容の一致テスト()
{
    string path1 = @"C:\Work2\Test1.txt";
    string path2 = @"C:\Work2\Test2.txt";

    FileAssert.AreEqual(path1, path2);
}

[Test]
public void パス文字列を使用したファイル内容の不一致テスト()
{
    string path1 = @"C:\Work2\Test1.txt";
    string path2 = @"C:\Work2\Test3.txt";

    FileAssert.AreNotEqual(path1, path2);
}

[Test]
public void FileInfoクラスを使用したファイル内容の一致テスト()
{
    FileInfo info1 = new FileInfo(@"C:\Work2\Test1.txt");
    FileInfo info2 = new FileInfo(@"C:\Work2\Test2.txt");

    FileAssert.AreEqual(info1, info2);
}

[Test]
public void FileInfoクラスを使用したファイル内容の不一致テスト()
{
    FileInfo info1 = new FileInfo(@"C:\Work2\Test1.txt");
    FileInfo info2 = new FileInfo(@"C:\Work2\Test3.txt");

    FileAssert.AreNotEqual(info1, info2);
}

テストに使用したファイルは以下の通りです。

Test1.txt

NUnit Test

 

Test2.txt

NUnit Test

 

Test3.txt

MSTest