首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法测试方法

算法测试方法
EN

Stack Overflow用户
提问于 2018-01-22 18:04:55
回答 1查看 61关注 0票数 0

我对单元测试比较陌生,我想知道如何才能确保我的算法能够正确地返回传递给我函数的任何给定字符串中最常见的单词?

代码语言:javascript
复制
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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 18:24:55

单元测试不是要确保所有字符串的答案都是正确的。为此,您需要一个正式的证明,这是更复杂的,与数学和类似的东西(在一个非常高层次的描述)。

单元测试是关于开发测试,以确保您的方法将工作的情况下,您开发的测试。因此,您需要开发不同的案例来测试不同的行为,例如:

  • 当您使用一个已经知道结果的字符串时,算法的结果是什么?这是正确的吗?
  • 当发送空字符串时,算法的结果是什么?
  • 当有多个最频繁的单词时,算法的结果是什么?

记住总是测试角落的案例(比如空的或多个最频繁的单词),并且在知道结果的时候为案例开发几个测试,以保证。

哦,还有,当你想要改变算法的时候,单元测试是非常有用的,但是你想测试它的行为是否没有改变。

在Swift中,您可以创建一个单元测试类,然后使用XCTest开发不同的测试方法。您可以遵循一个很好的教程来理解这是这里

我希望我已经回答了你的问题。祝好运。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48387689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档