c# - 函数不会返回任何内容

标签 c# forms function unit-testing

对函数进行单元测试,但当我运行单元测试时,该函数没有返回任何内容。

这是函数:

    public string FindUniqueWords(Dictionary<string, int> dictionary)
    {
        string uniqueWord = "";
        foreach (KeyValuePair<string, int> pair in dictionary) //loop through the occurenceDictionary
        {
            uniqueWord += (pair.Key + ", ");
        }
        uniqueWords.Text = uniqueWord;
        return (uniqueWord);
    }

这是单元测试

    [TestMethod]
    public void CheckUniqueWordsAreFoundTest()
    {
        string actual, expected;
        Form1 frm1 = new Form1();
        actual = frm1.FindUniqueWords(unitTestOccurenceDictionary);
        expected = "hello, world, i, am, god, of, this, ";
        Assert.AreEqual(expected, actual);
    }

我正在将这本字典发送到该函数

public class UnitTest1
{
    public Dictionary<string, int> unitTestOccurenceDictionary = new Dictionary<string, int>();
    public void Add(string key, string value)
    {
        unitTestOccurenceDictionary.Add("hello", 1);
        unitTestOccurenceDictionary.Add("world", 2);
        unitTestOccurenceDictionary.Add("I", 1);
        unitTestOccurenceDictionary.Add("am", 1);
        unitTestOccurenceDictionary.Add("god", 1);
        unitTestOccurenceDictionary.Add("of", 1);
        unitTestOccurenceDictionary.Add("this", 1);
    }

当我运行单元测试时,它失败并显示

actual = <> 

我不确定是什么原因造成的,但我觉得这是一个愚蠢的简单错误,例如缺少引用,但当我运行代码时没有错误。

最佳答案

我认为您的问题可能只是字典不保证其项目的顺序。

尝试像这样更改 FindUniqueWords 函数,以对返回的项目强制执行订单:

string uniqueWord = "";
List<string> result = new List<string>();
foreach (var key in dictionary.Keys.OrderBy(x => x))
{
    result.Add(key);
}
var uniqueWord = String.Join(", ", result);
return uniqueWord;

然后您可以更改单元测试以期望有序结果:

var expected = "am, god, hello, I, of, this, world";

测试应该开始通过。

注意:其他几个人提到您在字符串末尾也遇到了“,”问题,这促使我使用String.Join。支持@paxdiablo、@trungtin1710 和@HariPrasad 发现这个问题。

关于c# - 函数不会返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091348/

相关文章:

c# - 如何全屏显示消息?

javascript - 我想将表单输入作为变量获取

javascript - 选中/取消选中复选框时显示/隐藏表单字段

javascript - JavaScript 中的函数表达式与声明有什么区别?

c - 函数指针错误

c# - 如何在不阻止GUI的情况下等待多个任务?

c# - 配置选项时解析值

c# - 带有数据对象的 ASP.NET Core 重定向

javascript - 防止重复提交表单

javascript - 使用 javascript 或 jquery 将所有代码放在一个 div 类中