0
0

More than 3 years have passed since last update.

[.NET][C#]NUnitのStringAssertアサーションメソッド一覧

Posted at

はじめに

前回、NUnitのAssertクラスのClassicModelのアサーションメソッドを一通り試したので
今回はStringAssertクラスのアサーションメソッドを一通り試してみる。

実施環境

.NET:3.1.401
C#:8.0
NUnit:3.12.0

StringAssertクラス

NUnitのClassicModelのアサーションクラスの1つ。
クラス名の通り、文字列を検査する。
全てのメソッドは大文字小文字を区別して判定する。

1. Contains、DoesNotContain

Containsメソッドは、第1引数の文字列が第2引数の文字列内に含まれていることを検査する。
DoesNotContainメソッドは、その逆で第1引数の文字列が第2引数の文字列内に含まれていないことを検査する。

[TestCase("hoge", "aaahogeaaa")]// Test OK.
[TestCase("hoge", "aaahogaaa")]// Test NG.
[TestCase("hoge", "aaaHOGEaaa")]// Test NG.
public void ContainsTest(string expected, string actual)
{
    StringAssert.Contains(expected, actual);
}

[TestCase("hoge", "aaahogeaaa")]// Test NG.
[TestCase("hoge", "aaahogaaa")]// Test OK.
[TestCase("hoge", "aaaHOGEaaa")]// Test OK.
public void DoesNotContainTest(string expected, string actual)
{
    StringAssert.DoesNotContain(expected, actual);
}

2. StartsWith、DoesNotStartWith

StartsWithメソッドは、第1引数の文字列が第2引数の文字列の接頭辞になっていることを検査する。
DoesNotStartWithメソッドは、第1引数の文字列が第2引数の文字列の接頭辞になっていないことを検査する。

[TestCase("hoge", "hogeaaa")]// Test OK.
[TestCase("hoge", "hogaaa")]// Test NG.
[TestCase("hoge", "HOGEaaa")]// Test NG.
public void StartsWithTest(string expected, string actual)
{
    StringAssert.StartsWith(expected, actual);
}

[TestCase("hoge", "hogeaaa")]// Test NG.
[TestCase("hoge", "hogaaa")]// Test OK.
[TestCase("hoge", "HOGEaaa")]// Test OK.
public void DoesNotStartWithTest(string expected, string actual)
{
    StringAssert.DoesNotStartWith(expected, actual);
}

ちなみに、公式サイトのドキュメントでは、
DoesNotStartsWithと記載されているが、
DoesNotStartWithが正しい。
(StartsWithは、Withの前にsがあるので実装ミス?)

3. EndsWith、DoesNotEndWith

StartsWithの接尾辞版。

[TestCase("hoge", "aaahoge")]// Test OK.
[TestCase("hoge", "aaahog")]// Test NG.
[TestCase("hoge", "aaaHOGE")]// Test NG.
public void EndsWithTest(string expected, string actual)
{
    StringAssert.EndsWith(expected, actual);
}

[TestCase("hoge", "aaahoge")]// Test NG.
[TestCase("hoge", "aaahog")]// Test OK.
[TestCase("hoge", "aaaHOGE")]// Test OK.
public void DoesNotEndWithTest(string expected, string actual)
{
    StringAssert.DoesNotEndWith(expected, actual);
}

4. AreEqualIgnoringCase、AreNotEqualIgnoringCase

AreEqualIgnoringCaseメソッドは、第1引数と第2引数の文字列が大文字小文字無視で一致していることを検査する。
AreNotEqualIgnoringCaseメソッドは、第1引数と第2引数の文字列が大文字小文字無視で一致していないことを検査する。
当然だが、半角全角を区別しないというわけではない。


[TestCase("hoge", "HOGE")]// Test OK.
[TestCase("hoge", "Hoge")]// Test OK.
[TestCase("hoge", "HOG")]// Test NG.
[TestCase("hoge", "hoge")]// Test NG.
public void AreEqualIgnoringCaseTest(string expected, string actual)
{
    StringAssert.AreEqualIgnoringCase(expected, actual);
}

[TestCase("hoge", "HOGE")]// Test NG.
[TestCase("hoge", "Hoge")]// Test NG.
[TestCase("hoge", "HOG")]// Test OK.
[TestCase("hoge", "hoge")]// Test OK.
public void AreNotEqualIgnoringCaseTest(string expected, string actual)
{
    StringAssert.AreNotEqualIgnoringCase(expected, actual);
}

5. IsMatch、DoesNotMatch

IsMatchメソッドは、第1引数の正規表現パターンが第2引数の文字列にマッチするか検査する。
DoesNotMatchメソッドは、第1引数の正規表現パターンが第2引数の文字列にマッチしないか検査する。


[TestCase("^[0-9]{3}hoge[A-Z]{3}$", "123hogeABC")]// Test OK.
[TestCase("[0-9]*", "hoge123hoge")]// Test OK.
[TestCase("^[0-9]{3}hoge[A-Z]{3}$", "ABChoge123")]// Test NG.
public void IsMatchTest(string regexPattern, string actual)
{
    StringAssert.IsMatch(regexPattern, actual);
}

[TestCase("^[0-9]{3}hoge[A-Z]{3}$", "123hogeABC")]// Test NG.
[TestCase("[0-9]*", "hoge123hoge")]// Test NG.
[TestCase("^[0-9]{3}hoge[A-Z]{3}$", "ABChoge123")]// Test OK.
public void DoesNotMatchTest(string regexPattern, string actual)
{
    StringAssert.DoesNotMatch(regexPattern, actual);
}

参考

NUnit公式:StringAssert

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0