如果我有一个如下所示的实用方法,我该如何进行单元测试呢?好像我想确定输出是否正确我似乎必须将代码构建到测试方法中?我可以看到是否存在条件逻辑,例如输入字符串是否为空,返回null,但测试正确的输出似乎很棘手。
public static string EncodeTo64(string input)
{
byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(input);
string returnValue = System.Convert.ToBase64String(b);
return returnValue;
}
答案 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)
使用预先确定的输入和得到的正确输出,并与您的方法产生的结果进行比较。对多个输入/输出对执行此操作以测试方法的整体正确性。