我如何"单元测试"在C#?

时间:2016-01-11 16:00:54

标签: c# visual-studio unit-testing testing

所以我的项目中有这个方法:

public static String MD5Hash(string TextToHash)
{
    if ((TextToHash == null) || (TextToHash.Length == 0))
    {
        return String.Empty;
    }

    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] textToHash = Encoding.Default.GetBytes(TextToHash);
    byte[] result = md5.ComputeHash(textToHash);
    return System.BitConverter.ToString(result);

}

我尝试过这样的测试:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BugMon;

namespace BugMonTesting
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            string pwd = "Password";
            string expected = "DC-64-7E-B6-5E-67-11-E1-55-37-52-18-21-2B-39-64";
            frmLogIn.MD5Hash(pwd);
            Assert.AreEqual(pwd, expected);
        }
    }
}

但是,当我运行测试时,字符串pwd似乎没有通过方法,并保持为"密码"。

我做错了什么?

很抱歉,如果这很明显,但我以前从未使用过这些测试。

1 个答案:

答案 0 :(得分:4)

你永远不会对MD5Hash的返回值做任何事情。

试试这个:

string hash = frmLogIn.MD5Hash(pwd);
Assert.AreEqual(hash, expected);

请注意,这仅在MD5Hash返回格式为expected变量的字符串时才有效。