NUNIT - edideedMessage отличается ошибкой
-
25-09-2019 - |
Вопрос
Я вполне новый TDD и собираюсь с NUNIT и MOQ. У меня есть метод, где я ожидаю исключения, поэтому я хотел сыграть немного с функциями рамки.
Мой тестовый код выглядит следующим образом:
[Test]
[ExpectedException(ExpectedException = typeof(MockException), ExpectedMessage = "Actual differs from expected")]
public void Write_MessageLogWithCategoryInfoFail()
{
string message = "Info Test Message";
Write_MessageLogWithCategory(message, "Info");
_LogTest.Verify(writeMessage =>
writeMessage.Info("This should fail"),
"Actual differs from expected"
);
}
Но я всегда получаю ошибку, что сообщение об ошибке, которое фактическое сообщение исключения отличается от ожидаемого сообщения. Что я делаю неправильно?
Решение
К сожалению, Resharper Test Runner имеет ошибку / ограничение - это не обрабатывает атрибуты ожидаемых операций. У вас есть 2 варианта:
Используйте какой-то другой тестовый бегун (например, NUNIT-GUI.EXE, поставляемый с NUNIT) - но этот подход делает его болью для отладки ваших испытаний
Уловить и подтвердить исключение вручную, используя следующий рисунок:
TEST] Общественная пустота Void_messageLogwithCategoryInfoFail () {TRY {String Message = "INFO Тестовое сообщение";
Write_MessageLogWithCategory(message, "Info"); _LogTest.Verify(writeMessage => writeMessage.Info("This should fail"), "Actual differs from expected" ); Assert.Fail("Expected exception"); } catch(MockException e) { Assert.AreEqual("Actual differs from expected", e.Message); }
}
Это настоящий позор, потому что описательный способ сказать, что вы ожидаете, что исключение, гораздо приятнее!
На стороне Примечание Я надеюсь, что код выше только для игры с рамки - обычно вы никогда не поймаете Mockexceptions :)
Другие советы
Вы можете использовать дополнительный параметр MatchType = MessageMatch.Regex
.