我需要测试 Naïve 字符串搜索算法。 http://en.wikipedia.org/wiki/String_searching_algorithm
有人可以阐明我如何解决这个问题。
我的测试应该只测试外部行为吗?(即模式出现索引与使用的算法无关?)
或者我应该是算法特定的并测试驱动算法特定的实现?
我需要测试 Naïve 字符串搜索算法。 http://en.wikipedia.org/wiki/String_searching_algorithm
有人可以阐明我如何解决这个问题。
我的测试应该只测试外部行为吗?(即模式出现索引与使用的算法无关?)
或者我应该是算法特定的并测试驱动算法特定的实现?
或者我应该是算法特定的并测试驱动算法特定的实现?
这在很大程度上取决于您的课程将如何使用。测试公共合约通常是要走的路(并且为此编写体面的测试相当容易),所以除非您的客户可以以某种方式使用实现细节知识,否则我会坚持下去。
请注意,在纸上拥有特定算法可以帮助查明一些基本测试,而无需编写严格的实现相关测试,例如:
这应该为您提供更多实现特定测试的基本入口点。请记住,利用 数据驱动测试可以帮助您完全避免需要具有实现级别的知识,并且拥有足够大的数据集可能也足以验证算法的正确性。