单元测试实用方法

时间:2011-01-13 19:08:16

标签: c# unit-testing

如果我有一个如下所示的实用方法,我该如何进行单元测试呢?好像我想确定输出是否正确我似乎必须将代码构建到测试方法中?我可以看到是否存在条件逻辑,例如输入字符串是否为空,返回null,但测试正确的输出似乎很棘手。

public static string EncodeTo64(string input)
{
    byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(input);
    string returnValue = System.Convert.ToBase64String(b);
    return returnValue;
}

4 个答案:

答案 0 :(得分:5)

我会通过输入一个我知道正确输出的值来测试它。通过预先计算,或通过将其与已知值进行比较。您可能自己能够计算短字符串的输出。

此外,我将测试边界条件的方法行为,如空值和空字符串。

答案 1 :(得分:1)

这取决于这个功能的“正确性”的含义是什么,开发人员。我会将一个已知的字符串转换为输出,根据对我来说重要的条件验证这是正确的,然后比较函数的结果是否与我生成的结果相匹配。像这样:

const string expectedBase64String = "abc123$$%++";
const string testString = "Not the base 64 source of above";

Assert.AreEqual(expected, Utility.EncodeTo64(testString));

你本质上是正确的......你需要依赖除了代码行为之外的其他正确性定义,除非您需要测试的是“这仍然是我第一次运行时所做的事情它”。

答案 2 :(得分:1)

除了少数例外,你根本不会测试输出,因为它是由另一个单元 - System.Convert类实现的,而且它已经过充分测试。

有意义编写测试文档,当你传递异常输入时,该文档会记录该方法的作用:null,string.Empty,带有非ASCII编码的字符串等。< / p>

答案 3 :(得分:0)

使用预先确定的输入和得到的正确输出,并与您的方法产生的结果进行比较。对多个输入/输出对执行此操作以测试方法的整体正确性。