我希望在这里提出这个问题是可以的。 我在面试时被问了一个问题 - 标题中有描述。 例如,对于给定的字符串" ABABDCABDCDDPPABAB" - 它会返回AB,因为它出现次数最多。 即使我可以回答这个问题 - 问题的第二部分是为这种方法编写一个单元测试,它可以测试所有可能的场景! 有人能指出我如何解决这个问题吗?
答案 0 :(得分:2)
你应该回答一些与提议的功能行为有关的问题。例如:
如果源字符串 null ?
如果源字符串短于两个字符怎么办?
如果源字符串包含两对或多对频率相同的字符怎么办?
你们所有的答案都可以作为测试方法重写:
[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)
答案是测试不同的可能性,例如:
可能有更多选项,但在进入它们之前需要查看代码,例如验证某些方法被调用等等。