You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:52:00