Герметичные модульные испытания

Фото CDC на Unsplash

Большая часть программирования - это написание тестов, чтобы убедиться, что ваш код работает должным образом. В небольших проектах написание тестов может показаться обременительным, но они покажут свою ценность по мере добавления функций, рефакторинга модулей и роста команды. Большинство инженеров-программистов знакомы с основными типами тестирования, такими как модульные тесты , интеграционные тесты и приемочные тесты . Сегодня я хотел поговорить о сохранении герметичности модульных тестов, чтобы они оставались модульными тестами, а не становились интеграционными.

Герметик часто ассоциируется с лабораторией чистых помещений, но в мире программного обеспечения это относится к испытаниям, которые изолированы или защищены от внешних воздействий. Эти влияния могут быть зависимостями, такими как база данных, библиотека, API или что-то еще, что не является конкретным набором тестируемого кода. Модульное тестирование по дизайну должно иметь узкую область применения, которая фокусируется на тестировании единственной цели системы. Например, тестирование только одного метода класса. Эта узкая область применения делает модульные тесты простыми для понимания и устранения неполадок, а также делает их быстрыми и надежными.

Например, рассмотрим рисунок 1, который принимает в качестве аргумента хеш из внешнего API. Этот хеш-код содержит температуру в градусах Цельсия, которая to_fahrenheitконвертируется в градусы Фаренгейта.

def to_fahrenheit(api_return)
  (api_return[:temperature] * 9/5) +32
end
Figure 1: Arbitrary Ruby method to coverting Celsius to Fahrenheit

class TestMeme < Minitest::Test
  def setup
    @fake_api_return = {temperature: 100}
  end

  def test_to_fahrenheit
    assert_equal 212, to_fahrenheit(@fake_api_return)
  end
end
Figure 2: Hermetic Unit Test of to_fahrenheit using Ruby minitest

Suggested posts

Мои наиболее используемые ресурсы кодирования

Мои наиболее используемые ресурсы кодирования

На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.

Инструментарий гиперсовременного терминала

Инструментарий гиперсовременного терминала

Терминалы, оболочки и инструменты командной строки, устанавливающие стандарт в 2023 году. Все разработчики используют терминалы; для некоторых весь рабочий процесс — это терминал Этот пост знакомит с Hypermodern Terminal Toolbox — терминалом, оболочкой и инструментами командной строки, устанавливающими стандарт в 2023 году Kitty как эмулятор терминала Kitty — это эмулятор терминала — альтернатива терминалу GNOME , Alacritty или Терминал Windows.

Related posts

Поиск информации о доменных именах

Отрывок из книги «Маленькие программные инструменты Sharp» Брайана П. Хогана.

Поиск информации о доменных именах

Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.

Журнал

Журнал

Открытый дневник: картинка в день. Меня всегда завораживали истории.

Всегда ли искусство аполитично?

Всегда ли искусство аполитично?

Вчера мы закрыли двери конкурса песни «Евровидение» в этом году блестящим, хаотичным грандиозным финалом, в котором шведская певица Лорин забрала домой трофей, став первой женщиной, выигравшей дважды, и вернув корону Швеции спустя 50 лет после того, как ABBA выиграла конкурс. с «Ватерлоо». Они стали одним из крупнейших исполнителей в каноне поп-музыки.

Конкурс Goodreads Reading Challenge токсичен

Конкурс Goodreads Reading Challenge токсичен

Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.