Вопрос

Я вполне новый 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 варианта:

  1. Используйте какой-то другой тестовый бегун (например, NUNIT-GUI.EXE, поставляемый с NUNIT) - но этот подход делает его болью для отладки ваших испытаний

  2. Уловить и подтвердить исключение вручную, используя следующий рисунок:

    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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top