c# interview的单元测试——编写一个方法,查找在给定字符串中重复次数最多的双字符字符串

本文关键字:字符串 字符 单元测试 interview 方法 一个 查找 | 更新日期: 2023-09-27 18:03:52

希望在这里问这个问题没问题。面试时,我被问了一个问题——题目里有一个描述。例如,对于给定的字符串"ABABDCABDCDDPPABAB",它将返回AB,因为它出现的次数最多。尽管我可以回答这个问题——问题的第二部分是为这个方法编写一个单元测试,它将能够测试所有可能的场景!谁能告诉我如何处理这样的问题?

c# interview的单元测试——编写一个方法,查找在给定字符串中重复次数最多的双字符字符串

您应该回答一些与建议的函数行为有关的问题。例如:

  1. 如果源字符串是null怎么办?

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

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

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

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

等等

测试边界用例,即null和空字符串,奇数字符的字符串等。还要测试明显的成功案例——你的函数应该可以工作。

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

  1. AB出现次数最多的测试
  2. AB出现最小时的测试
  3. AB与PA出现量相同时的测试
  4. 测试意外输入(如空字符串)的结果

可能有更多的选项,但在进入它们之前需要看一下代码,比如验证某些方法是否被调用等等