Рубрики
Без рубрики

Семь правил непрерывного тестирования единиц

Вступление Вы пишете модульный тест для своего проекта? Выполняются ли модульные тесты каждый раз? Я подчиняюсь… С пометкой “Тестирование”, “java”, “новички”, “junit”.

Вступление

Вы пишете модульный тест для своего проекта? Выполняются ли модульные тесты каждый раз?

Я полностью думал, что писать модульный тест и писать “непрерывный” UnitTest – это одно и то же. Но это разница.

Почти каждый инженер знает, что UnitTest важен. Поэтому они пишут Модульный тест. Но я видел, как такой модульный тест отменяется снова и снова. Почему? Поскольку они очень медленные, их трудно обслуживать, и они сломаны.

Непрерывное модульное тестирование должно соответствовать некоторым требованиям. Вы можете удовлетворить это требование с помощью следующих правил.

  • Беги всегда
  • Сохраняйте мобильность
  • Сохраняйте повторяемость
  • Избегайте медленных тестов, таких как RDB, эмуляция и так далее
  • Не используй свои глаза
  • Один модульный тест, одна точка зрения для теста
  • Читаемое пользователем имя

В этой статье я расскажу об этих правилах. Я объясняю на основе Java, Maven, JUnit. Но Вы можете применить его и к другим языкам.

Семь правил

Беги всегда

Это правило является самым важным. Вы должны запускать UnitTest каждый раз, когда создаете свой код.

Не используйте -Dmaven.test.skip=true !! Пожалуйста…

Если вы всегда можете запустить все модульные тесты, они представляют собой непрерывный модульный тестовый код. Но если вы не можете этого сделать, вам нужно изменить его.

Сохраняйте мобильность

Переносимость важна. Модульный тест выполняется не только на вашем компьютере, но и в другой среде. Другая среда – это КОМПЬЮТЕР коллеги, среда CI и будущий ваш компьютер.

Для удобства переносимости вам необходимо использовать только в каталоге вашего проекта. Вы не должны использовать /var/foobar и D:\foobar как каталог тестовых данных и так далее. Пожалуйста, используйте в каталоге target или src/test/resources/

Сохраняйте повторяемость

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

Как правило, такой код инициализации или очистки должен выполняться на Настройка или Демонтаж .

Избегайте медленных тестов, таких как RDB, эмуляция и так далее

Вам следует избегать медленных тестов, таких как RDB-тест и использование эмулятора. Такой тест очень полезен. Ты должен это сделать. Однако это интеграционный тест.

JUnit также поддерживает интеграционное тестирование. Вы можете использовать реальную базу данных с помощью DBUnit. Ты можешь использовать аркиллиан. Сегодня вы можете использовать даже Docker.

Я люблю это. Но эти тесты проходят медленно. Если тесты выполняются медленно, вы не будете запускать все модульные тесты каждый раз.

Итак, вы должны отделить такой тест от медленного теста. Я рекомендую создать slow-test профиль или использовать фазу интеграционного тестирования maven . И вы можете запустить его при сборке в среде CI или перед фиксацией.

Не используй свои глаза

Не используйте свои глаза для модульного тестирования!

UnitTest должен автоматически проверять утверждение. Вы не должны использовать свои глаза для проверки журналов, стандартного вывода, вывода файлов и так далее. Пожалуйста, используйте assertThat, assertEquals и так далее. Это роль Подразделения.

Возможно, следующая статья поможет вам. Как вы пишете “Производственный код” для модульного тестирования?

Один модульный тест, один модульный тест, Одна точка зрения для теста

Каждый тест должен быть проверкой только с одной точки зрения. Если для тестового примера существует много точек зрения, трудно проверить, какой тест провален.

Это не ручные тесты. Вам не нужно снижать стоимость тестовой эксплуатации. Вы можете создать тестовый пример только для одной точки зрения.

Пожалуйста, избегайте только одного тестового примера для каждого метода.

Читаемое пользователем имя

Пожалуйста, используйте читаемое имя. Вам следует избегать подобных test001 , тест002 , тест003 … Потому что никто не может понять ожидание его метода.

Именование важно так же, как и производственный код.

Возможно, стиль BDD вам очень поможет. Вы должны использовать имя метода, условие и ожидание в качестве имени теста.

Резюме

Я думаю, что почти править совсем не сложно. Возможно, многие люди думают, что эти правила очень естественны. Вы можете даже подумать, что в этом нет необходимости, поскольку это соответствует здравому смыслу.

Но важно четко соблюдать правила.

В частности, многие люди не разделяют модульный тест и интеграционный тест. Тесты JUnit управляются как просто тесты JUnit. Это нехорошо.

Я верю, что простые правила поддерживают плавное общение!

Счастливого взлома!

Оригинал: “https://dev.to/koduki/the-seven-rules-for-continuous-unittest-4j9l”