是Assert.AreEqual <byte []>(一,二); 比较对象或值

ste*_*ger 5 c# unit-testing

为什么T不能是一个字节[]?请参阅https://msdn.microsoft.com/de-de/library/ms243446.aspx上的说明

        byte[] one = { 0x1, 0x2, 0x3, 0x4, 0x5 };
        byte[] two = { 0x1, 0x2, 0x3, 0x4, 0x5 };

        //don't fail
        Assert.AreEqual(Convert.ToBase64String(one), Convert.ToBase64String(two));
        //fail
        Assert.AreEqual<byte[]>(one, two);
Run Code Online (Sandbox Code Playgroud)

RB.*_*RB. 14

您正在比较一个字节数组具有引用相等性与另一个字节数组(即两个变量指向同一个数组),在这种情况下它们不会.

更好的方法是使用SequenceEqual进行测试:

Assert.IsTrue(one.SequenceEqual(two));
Run Code Online (Sandbox Code Playgroud)

  • 或者只使用`CollectionAssert.AreEqual` (4认同)