1. ホーム
  2. c#

[解決済み] 同一のバイト配列で Assert.AreEqual(T obj1, Tobj2) が失敗する理由

2023-05-21 22:06:02

質問

次のようなコードに2つの同じバイト配列があります。

    /// <summary>
    ///A test for Bytes
    ///</summary>
    [TestMethod()]
    public void BytesTest() {
        byte[] bytes = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketData);
        TransferEventArgs target = new TransferEventArgs(bytes);

        byte[] expected = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketValue);
        byte[] actual;
        actual = target.Bytes;

        Assert.AreEqual(expected, actual);
    }

どちらの配列も1バイト単位まで同じです。このシナリオでは、なぜAssert.AreEqualは失敗するのでしょうか?

どのように解決するのですか?

Assert.Equals を使用してテストします。 Equals メソッドを使用してテストします。デフォルトでは参照等式を使用しますが、これらは異なるオブジェクトであるため、等しくはありません。 配列の各バイトを比較し、それらが等しいことを確認したいと思うでしょう。 これを行う一つの方法は、ICollectionを実装したものに変換し、その中で CollectionAssert.AreEqual() を使うことです。