所以我的项目中有这个方法:
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似乎没有通过方法,并保持为"密码"。
我做错了什么?
很抱歉,如果这很明显,但我以前从未使用过这些测试。
答案 0 :(得分:4)
你永远不会对MD5Hash的返回值做任何事情。
试试这个:
string hash = frmLogIn.MD5Hash(pwd);
Assert.AreEqual(hash, expected);
请注意,这仅在MD5Hash返回格式为expected
变量的字符串时才有效。