2009-07-09 7 views
1

Je convertis mes tests unitaires de NUnit vers le cadre de test unitaire VisualStudio 2010. La méthode ByteToUShortTest() suivante échoue avec le message:Test d'unité VS 2010 et type non signé

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]); 
} 

Le code appelé par le test est:

[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; 
} 

Ce test a été exécuté avec succès NUnit. Des idées pour lesquelles les types sont supposés être différents?

Solution

Pour les tableaux simples et multidimensionnels, ainsi que pour tout ICollection, le cadre de test unitaire VisualStudio 2010 fournit la classe CollectionAssert.

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

Répondre

4

Ce ne sont pas les types qui sont différents, ce sont les instances. Vous comparez deux tableaux différents.

Questions connexes