如何在XUnit(C#)中断言字符串包含指定子串X次?
XUnit 断言字符串包含指定子串的次数
XUnit核心库没有直接提供统计子串出现次数的开箱即用断言方法,但可以通过两种简洁方式实现需求:
直接结合LINQ统计后断言
这是最快速的实现方式,无需额外扩展:var target = "abcabcabc"; var subStr = "abc"; // Split分割后长度减1即为子串出现次数 var occurrenceCount = target.Split(new[] { subStr }, StringSplitOptions.None).Length - 1; Assert.Equal(3, occurrenceCount);自定义扩展断言方法(复用场景)
如果需要在多个测试用例中复用这个逻辑,可以给XUnit的Assert类扩展一个方法:public static class StringAssertExtensions { public static void ContainsSubstring(this IAssert assert, string actual, string substring, int expectedCount) { var count = actual.Split(new[] { substring }, StringSplitOptions.None).Length - 1; Assert.Equal(expectedCount, count); } }使用时直接调用扩展方法:
Assert.ContainsSubstring(target, subStr, 3);
内容的提问来源于stack exchange,提问作者S. Dre
相关产品推荐
相关产品推荐

