[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

 

 

[NUnit] 文字列をテストする

NUnitでは文字列をテストするために、以下のメソッドが用意されています。

メソッド 説明
StringAssert.Contains(含まれるべき文字列、実際の値) 実際の値に含まれるべき期待値が含まれている場合、テスト成功
StringAssert.StartsWidth(始まりの文字列、実際の値) 実際の値が始まりの文字列で始まっている場合、テスト成功
StringAssert.EndWith(終わりの文字列, 実際の値) 実際の値が終わりの文字列で終わっている場合、テスト成功
StringAssert.AreEqualIgnoringCase(期待値、実際の値) 実際の値と期待値で大文字小文字を区別なく比較し、等しい場合はテスト成功
StringAssert.AreNotEqualIgnoringCase(期待値、実際の値) 実際の値と期待値で大文字小文字を区別なく比較し、等しくない場合はテスト成功

以下に使用例を示します

VB.NETの例

<Test>
Public Sub 任意の文字列で始まっているかをテスト()

    Dim 始まりの文字列 As String = "ABC"
    Dim 実際の値 As String = "ABCDEFGH"

    ' 実際の値が始まりの文字列で始まっていればテスト成功
    StringAssert.StartsWith(始まりの文字列, 実際の値)
End Sub

<Test>
Public Sub 任意の文字列で終わっているかをテスト()

    Dim 終わりの文字列 As String = "FGH"
    Dim 実際の値 As String = "ABCDEFGH"

    ' 実際の値が終わりの文字列で始まっていればテスト成功
    StringAssert.EndsWith(終わりの文字列, 実際の値)
End Sub

<Test>
Public Sub 大文字小文字を区別せず等しいかをテスト()

    Dim 期待値 As String = "abcdefgh"
    Dim 実際の値 As String = "ABCDEFGH"

    ' 大文字小文字を区別せず期待値と実際の値が等しい場合テスト成功
    StringAssert.AreEqualIgnoringCase(期待値, 実際の値)
End Sub

<Test>
Public Sub 大文字小文字を区別せず等しくないことをテスト()

    Dim 期待値 As String = "abcdefgh#"
    Dim 実際の値 As String = "ABCDEFGH"

    ' 大文字小文字を区別せず期待値と実際の値が等しくない場合テスト成功
    StringAssert.AreNotEqualIgnoringCase(期待値, 実際の値)
End Sub

<Test()>
Public Sub 正規表現によるパターンマッチでのテスト()
    Dim 郵便番号パターン As String = "\d\d\d-\d\d\d\d"
    Dim 実際の値 As String = "020-0123"

    ' 実際の値が郵便番号パターンとマッチすればテスト成功
    StringAssert.IsMatch(郵便番号パターン, 実際の値)
End Sub

C#での例

[Test]
public void 任意の文字列が含まれるかテスト()
{
    string 含まれるべき文字列 = "DEF";
    string 実際の値= "ABCDEFGH";

    // 実際の値に期待が含まれていればテスト成功
    StringAssert.Contains(含まれるべき文字列, 実際の値);
}

[Test]
public void 任意の文字列で始まっているかをテスト()
{
    string 始まりの文字列 = "ABC";
    string 実際の値 = "ABCDEFGH";

    // 実際の値が始まりの文字列で始まっていればテスト成功
    StringAssert.StartsWith(始まりの文字列, 実際の値);
}

[Test]
public void 任意の文字列で終わっているかをテスト()
{
    string 終わりの文字列 = "FGH";
    string 実際の値 = "ABCDEFGH";

    // 実際の値が終わりの文字列で始まっていればテスト成功
    StringAssert.EndsWith(終わりの文字列, 実際の値);
}

[Test]
public void 大文字小文字を区別せず等しいかをテスト()
{
    string 期待値 = "abcdefgh";
    string 実際の値 = "ABCDEFGH";

    // 大文字小文字を区別せず期待値と実際の値が等しい場合テスト成功
    StringAssert.AreEqualIgnoringCase(期待値, 実際の値);
}

[Test]
public void 大文字小文字を区別せず等しくないことをテスト()
{
    string 期待値 = "abcdefgh#";
    string 実際の値 = "ABCDEFGH";

    // 大文字小文字を区別せず期待値と実際の値が等しくない場合テスト成功
    StringAssert.AreNotEqualIgnoringCase(期待値, 実際の値);
}

[Test]
public void 正規表現にようるパターンマッチでのテスト()
{
    string 郵便番号パターン = @"\d\d\d-\d\d\d\d";
    string 実際の値 = "020-0123";

    // 実際の値が郵便番号パターンとマッチすればテスト成功
    StringAssert.IsMatch(郵便番号パターン, 実際の値);
}