C#面试的单元测试 - 编写一个方法,找出大多数时间在给定字符串中重复的双字符串

时间:2016-08-25 12:34:15

标签: c#

我希望在这里提出这个问题是可以的。 我在面试时被问了一个问题 - 标题中有描述。 例如,对于给定的字符串" ABABDCABDCDDPPABAB" - 它会返回AB,因为它出现次数最多。 即使我可以回答这个问题 - 问题的第二部分是为这种方法编写一个单元测试,它可以测试所有可能的场景! 有人能指出我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

你应该回答一些与提议的功能行为有关的问题。例如:

  1. 如果源字符串 null

  2. ,该怎么办?
  3. 如果源字符串短于两个字符怎么办?

  4. 如果源字符串包含两对或多对频率相同的字符怎么办?

  5. 你们所有的答案都可以作为测试方法重写:

    [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);
    }
    

    等等。

    测试边界情况,即空字符串和空字符串,字符数为奇数的字符串等。另外测试明显的成功案例 - 你的功能应该有效。

答案 1 :(得分:1)

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

  1. 测试AB何时出现最多
  2. 测试AB何时出现
  3. 测试AB何时出现与PA相同的数量
  4. 测试意外输入会发生什么,例如空字符串。
  5. 可能有更多选项,但在进入它们之前需要查看代码,例如验证某些方法被调用等等。