C#面试单元测试——编写一个方法,找出给定字符串中重复次数最多的两个字符串

C#面试单元测试——编写一个方法,找出给定字符串中重复次数最多的两个字符串,c#,C#,我希望可以在这里问这个问题。 我在采访中被问到一个问题——标题中有描述。 例如,对于给定的字符串“ababdcabddppabab”,它将返回AB,因为它出现的次数最多。 尽管我可以回答这个问题——问题的第二部分是为这个方法编写一个单元测试,它可以测试所有可能的场景! 有人能告诉我如何解决这个问题吗?答案是测试不同的可能性,例如: 测试AB出现的时间最长 当AB最小时进行测试 当AB与PA出现相同数量时进行测试 测试意外输入(如空字符串)的情况 可能有更多的选项,但在进入之前需要先查看代码,如验

我希望可以在这里问这个问题。 我在采访中被问到一个问题——标题中有描述。 例如,对于给定的字符串“ababdcabddppabab”,它将返回AB,因为它出现的次数最多。 尽管我可以回答这个问题——问题的第二部分是为这个方法编写一个单元测试,它可以测试所有可能的场景!
有人能告诉我如何解决这个问题吗?

答案是测试不同的可能性,例如:

  • 测试AB出现的时间最长
  • 当AB最小时进行测试
  • 当AB与PA出现相同数量时进行测试
  • 测试意外输入(如空字符串)的情况

  • 可能有更多的选项,但在进入之前需要先查看代码,如验证调用了某些方法等。您应该回答一些与函数的建议行为相关的问题。例如:

  • 如果源字符串为空怎么办

  • 如果源字符串短于两个字符怎么办

  • 如果源字符串包含两个或更多具有相同频率的字符对,该怎么办

  • 您可以将所有答案改写为测试方法:

    [TestMethod]
    [ExpectedException(typeof(ArgumentNullException))]
    public void FindMostFrequentPair_WithNull_ThrowsArgumentNullException()
    {
        var pair = Utils.FindMostFrequestPair(null);
    }
    
    [TestMethod]
    public void FindMostFrequentPair_WithSameFrequentPairs_ReturnsFirst()
    {
        var pair = Utils.FindMostFrequestPair("ABCD");
    
        Assert.AreEqual("AB", pair);
    }
    
    等等


    测试边界情况,即空字符串和空字符串、奇数字符的字符串等。也测试明显成功的情况-您的函数应该可以工作。

    Mark,我们的想法是相同的。我在回答中提出了几乎相同的问题:)