2015-11-06 3 views
0

Я пытаюсь создать тест для метода, который передается массивом int [] AllNumbers и возвращает массив int [] только EvenNumbers. Хотя отладка теста показывает мне, что Expected и Actual те же тесты, которые все еще не выполняются. Я предполагаю, что это проблема .Equals против ==?C# TDD Тестирование массива [int] не работает должным образом

Ошибка:

Failed TestEvenNumbers CalculatorEngineTests Assert.AreEqual failed. Expected:<System.Int32[]>. Actual:<System.Int32[]>.  

Это мой тест:

[TestMethod] 
    public void TestEvenNumbers() 
    { 
     Calculator target = new Calculator(); 
     int[] test = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
     int[] expected = { 2, 4, 6, 8 }; 
     int[] actual = target.GetEvenNumbers(test); 

     //This passes 
     Assert.AreEqual(expected[1], actual[1]); 
     //This fails 
     Assert.AreEqual(expected, actual); 
    } 

Это метод, который я хочу, чтобы тест:

public int[] GetEvenNumbers(int[] arr) 
    { 
     var evenNums = 
      from num in arr 
      where num % 2 == 0 
      select num; 


     return evenNums.ToArray<int>(); 
    } 

ответ

3

Try:

CollectionAssert.AreEqual(expected, actual); 

Чтобы утверждать, что коллекции содержат одни и те же вещи, как я считаю, Assert.AreEqual будет просто сравнивать ссылки.

+0

Благодарим за помощь. :) –

Смежные вопросы