我对单元测试比较陌生,我想知道如何才能确保我的算法能够正确地返回传递给我函数的任何给定字符串中最常见的单词?
var test = "Let's figure. out what the most comm$on wor!!!!d is in the sentence."
func checkForRandomChracters(string: String) -> String {
let charactersToRemove = Array(".:?!,@#$%^*,")
let arrayOfChars = Array(string)
let filteredString = arrayOfChars.reduce("") {
let str = String($1)
return $0 + (charactersToRemove.contains($1) ? "" : str)
}
return filteredString
}
func mostFrequentWords(string: String) -> String {
let lowerString = string.lowercased()
let cleanedString = checkForRandomChracters(string: lowerString)
let array = cleanedString.components(separatedBy: " ")
var itemInDictionary: [String: Int] = [:]
for item in array {
itemInDictionary[item] = (itemInDictionary[item] ?? 0) + 1
}
var mostCommonNameInArray = ""
for key in itemInDictionary.keys {
if mostCommonNameInArray == "" {
mostCommonNameInArray = key
} else {
let count = itemInDictionary[key]!
if count > itemInDictionary[mostCommonNameInArray]! {
mostCommonNameInArray = key
}
}
}
return mostCommonNameInArray
}
mostFrequentWords(string: test) // returns 'the'发布于 2018-01-22 18:24:55
单元测试不是要确保所有字符串的答案都是正确的。为此,您需要一个正式的证明,这是更复杂的,与数学和类似的东西(在一个非常高层次的描述)。
单元测试是关于开发测试,以确保您的方法将工作的情况下,您开发的测试。因此,您需要开发不同的案例来测试不同的行为,例如:
记住总是测试角落的案例(比如空的或多个最频繁的单词),并且在知道结果的时候为案例开发几个测试,以保证。
哦,还有,当你想要改变算法的时候,单元测试是非常有用的,但是你想测试它的行为是否没有改变。
在Swift中,您可以创建一个单元测试类,然后使用XCTest开发不同的测试方法。您可以遵循一个很好的教程来理解这是这里。
我希望我已经回答了你的问题。祝好运。
https://stackoverflow.com/questions/48387689
复制相似问题