c# - 比较两个文件是否相等的断言语句

标签 c# asp.net-mvc unit-testing assert

我正在从一个文件写入另一个文件,我在测试中创建了一个 Assert 语句来检查新文件是否与原始文件相同,但不确定最好的方法是什么。我尝试了 Assert.Equals 但它返回失败,即使我实际检查了两个文件并且它们完全相同。

 Assert.IsTrue(File.Equals(downloadfile, created), "Files do not match");

最佳答案

创建文件的 MD5 或 SHA 哈希值,并进行比较。

public string GetFileHash(string filename)
{
    var hash = new SHA1Managed();
    var clearBytes = File.ReadAllBytes(filename);
    var hashedBytes = hash.ComputeHash(clearBytes);
    return ConvertBytesToHex(hashedBytes);
}

public string ConvertBytesToHex(byte[] bytes)
{
    var sb = new StringBuilder();

    for(var i=0; i<bytes.Length; i++)
    {
        sb.Append(bytes[i].ToString("x"));
    }
    return sb.ToString();
}

[Test]
public void CompareTwoFiles()
{
    const string originalFile = @"path_to_file";
    const string copiedFile = @"path_to_file";

    var originalHash = GetFileHash(originalFile);
    var copiedHash = GetFileHash(copiedFile);

    Assert.AreEqual(copiedHash, originalHash);
}

关于c# - 比较两个文件是否相等的断言语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17816335/

相关文章:

c# - LinkedIn 共享内容选项,如 facebook 请求对话框

unit-testing - 生产中的 NJasmine

android - 我对登录到远程服务器的 Repository 类的单元测试有多有效?

python - 如何使用通配符检查模拟调用?

c# - 无法在 C# 中使用我的类库

c# - 使用带有 Gmail OAuth 的 MailKit 发送邮件

c# - 如何使用 2.4 C# Mongo 驱动程序运行解释查询?

asp.net - 在 Controller .NET MVC 中创建 URL

c# - 创建自定义 TreeView/TreeNode

asp.net-mvc - 使用 Select2 ASP.NET MVC 时进行不显眼的验证