.net Assert一个字符串包含一个子字符串X次- XUnit(C#)

kpbwa7wx  于 2023-05-19  发布在  .NET
关注(0)|答案(1)|浏览(182)

我找不到任何XUnit的例子,尽管我知道JUnit和Moq有这个选项。
我有一个字符串,它包含3次相同的子字符串,或者应该,我想Assert。我正在使用XUnit,但我找不到任何方法来以一种干净的方式Assert这一点,使用库提供的东西。
是否有任何开箱即用的选项?

i7uaboj4

i7uaboj41#

为此,我将定义一个扩展方法来进行正确的Assert:

public static class TestUtils
{
    public static void AssertContainsXTimes(this string actual, string expectedSubstring, int times)
    {
        var actualRemovedLength = actual.Length - actual.Replace(expectedSubstring, string.Empty).Length;
        var expectedRemovedLength = expectedSubstring.Length * times;

        Assert.Equal(expectedRemovedLength, actualRemovedLength);
    }

    public static void AssertContainsAtLeastXTimes(this string actual, string expectedSubstring, int times)
    {
        var actualRemovedLength = actual.Length - actual.Replace(expectedSubstring, string.Empty).Length;
        var expectedRemovedLength = expectedSubstring.Length * times;

        Assert.True(actualRemovedLength >= expectedRemovedLength);
    }
}

下面是示例单元测试的屏幕截图及其结果,以便更好地理解:

相关问题