Нужна ясность использования NUnit в TestCase

У меня есть такой тест:

[TestCase(12, Result= typeof(mytype))]
public mytype GetById(int id)
{
yada, yada, yada.

}

in the NUnit error window, I see this:

Test.Tester.GetById(12):
  Expected: <mytype>
  But was:  <mytype>

Мой вопрос в том, ожидается ли это? Есть ли способ указать тип возвращаемого значения, когда это мой собственный тип, а не целое число, строка и т. д.? Все примеры, которые я нашел в Интернете, возвращают только строки или целые числа. Нужно ли мне на самом деле генерировать экземпляр mytype и говорить, что это то, что я ожидаю?

Это NUnit 2.5.9.


person adamx97    schedule 17.12.2010    source источник


Ответы (2)


Testcase Result=... проверяет значение результата, а не тип результата.

Сообщение об ошибке вводит в заблуждение, потому что type.ToString() и object.ToString() приводят к одному и тому же сообщению.

Переопределите метод myTpe.ToString(), и сообщение об ошибке станет

 Expected: <mytype>
 But was:  {your ToString() result goes here}

эти тесты (nunit 2.5.7) работают как положено

    [TestCase(12, Result = "0")]
    public String GetById(int id)
    {
        return "0";
    }

    [TestCase(12, Result = typeof(mytype))]
    public System.Type GetByIdType(int id)
    {
        return typeof(mytype);
    }
person k3b    schedule 30.12.2010
comment
Спасибо. Я надеялся, что смогу на самом деле вернуть объект (и проверить тип), а затем использовать несколько тестовых случаев, связанных вместе, каждый из которых выполняет свою проверку по пути и возвращает свой результат вызывающей стороне. - person adamx97; 05.01.2011

Я никогда не видел, чтобы результат передавался так раньше. Но не могли бы вы просто передать результат в качестве другого параметра?

[TestCase(12, 1)] 
public mytype GetById(int id, int result) 
{ 
   Assert.AreEqual(12, 1);
} 

и это, вероятно, констатирует очевидное, но Ожидаемое: Но было: звучит очень похоже на то, что вы получите, если сравните «правда» с правдой.

person Steph    schedule 29.12.2010