gpt4 book ai didi

c# - VS 2010 单元测试和无符号类型

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:47 24 4
gpt4 key购买 nike

我正在将我的单元测试从 NUnit 转换到 VisualStudio 2010 单元测试框架。以下ByteToUShortTest()方法失败并显示消息:

Assert.AreEqual failed. Expected:<System.UInt16[]>. Actual:<System.UInt16[]>.

[TestMethod, CLSCompliant(false)]
public void ByteToUShortTest()
{
var array = new byte[2];
Assert.AreEqual(ByteToUShort(array), new ushort[1]);
}

测试调用的代码是:

[CLSCompliant(false)]
public static ushort[] ByteToUShort(byte[] array)
{
return ByteToUShort(array, 0, array.Length, EndianType.LittleEndian);
}

public enum EndianType
{
LittleEndian,
BigEndian
}

[CLSCompliant(false)]
public static ushort[] ByteToUShort(byte[] array, int offset, int length, EndianType endianType)
{
// argument validation
if ((length + offset) > array.Length)
throw new ArgumentException("The length and offset provided extend past the end of the array.");
if ((length % 2) != 0)
throw new ArgumentException("The number of bytes to convert must be a multiple of 2.", "length");

var temp = new ushort[length / 2];

for (int i = 0, j = offset; i < temp.Length; i++)
{
if (endianType == EndianType.LittleEndian)
{
temp[i] = (ushort)(((uint)array[j++] & 0xFF) | (((uint)array[j++] & 0xFF) << 8));
}
else
{
temp[i] = (ushort)(((uint)array[j++] & 0xFF) << 8 | ((uint)array[j++] & 0xFF));
}
}

return temp;
}

此测试使用 NUnit 成功运行。知道为什么类型应该不同吗?

解决方案

对于一维和多维数组,以及任何ICollection , VisualStudio 2010 单元测试框架提供了 CollectionAssert类(class)。

[TestMethod, CLSCompliant(false)]
public void ByteToUShortTest()
{
var array = new byte[2];
CollectionAssert.AreEqual(ByteToUShort(array), new ushort[1]);
}

最佳答案

不同的不是类型,而是实例。您正在比较两个不同的数组。

关于c# - VS 2010 单元测试和无符号类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com