Каждая программа нуждается в тестировании. Существует много видов тестирования. Сегодня мы поговорим о модульном тестировании.
- Модульное тестирование.
- Юнит.
- ТДД.
Модульное тестирование
Программное обеспечение состоит из множества блоков с определенной логикой. Модульное тестирование — это тип тестирования, при котором проверяется каждый модуль отдельно, чтобы убедиться, что отдельные части работают правильно. Блок может быть представлен в виде модуля, класса и функции. В большинстве случаев модульное тестирование выполняется на функциональном уровне. По сути, мы проверяем наши методы (функции), чтобы они работали должным образом в нашем исходном коде.
Юнит-тестирование — это набор автоматизированных тестовых случаев. Обычно он находится в том же исходном проекте и создается самими разработчиками.
Давайте посмотрим, как мы можем провести модульное тестирование, не используя готовые библиотеки решений.
Мы просто использовали бы наш метод с другими аргументами и смотрели бы, возвращает ли он правильный результат. На самом деле это не автоматизировано, каждый раз, когда мы запускаем этот код, нам нужно смотреть на вывод и видеть, правильно ли он напечатан.
Нам нужно что-то для проверки вывода, и нам нужно много других функций для создания надежных наборов автоматизированных тестов.
Вносите изменения без страха. Набор модульных тестов позволяет нам вносить изменения, не рискуя нарушить существующие рабочие функции (если изменение что-то сломает, набор тестов обнаружит это, и мы сможем применить исправление).
Юнит
JUnit — одна из библиотек для модульного тестирования в Java.
- Нет основного метода. JUnit предоставляет собственный механизм запуска.
- У нас есть отдельные тест-кейсы. Тестовый пример в JUnit представлен методом void, помеченным аннотацией @Test.
- Большинство тестовых случаев будут иметь входные данные, фактические результаты, ожидаемые результаты. Каждый тестовый пример должен иметь утверждения для проверки фактического результата с ожидаемым результатом.
Давайте поговорим о том, где у нас должен быть наш набор модульных тестов.
Мы храним наши классы модульных тестов в тестовой папке.
Следуя структуре Maven, фактический исходный код приложения выглядит следующим образом:
src/main/java
И код тестирования:
src/test/java
Мы не будем углубляться в JUnit. Если вы хотите узнать больше, перейдите к их официальным документам.
Разработка через тестирование
Я хотел бы упомянуть TDD в этой статье, потому что он стал большой частью разработки программного обеспечения. В TDD мы сначала пишем наши тестовые примеры, а затем реализуем реальную функциональность.
Это продолжение схемы TDD, основанной на книге Разработка через тестирование на примере:
1. Добавить тест.
2. Запустить все тесты. Новый тест не должен пройти по ожидаемым причинам.
3. Напишите простейший код, который проходит новый тест.
4. Теперь все тесты должны пройти.
5. При необходимости выполните рефакторинг, используя тесты после каждый рефакторинг, чтобы гарантировать сохранение функциональности.
Повторить.
Это все для этой статьи. Удачного кодирования!
Ресурсы и ссылки, используемые в этой статье:
Please take my Java Course for video lectures. This article is part of the series of articles to learn Java programming language from Tech Lead Academy: Introduction to programming OS, File, and File System Working with terminal Welcome to Java Programming Language Variables and Primitives in Java Convert String to numeric data type Input from the terminal in Java Methods with Java Java Math Operators and special operators Conditional branching in Java Switch statement in Java Ternary operator in Java Enum in Java String class and its methods in Java Loops in Java Access modifiers in Java Static keyword in Java The final keyword in Java Class and Object in Java Object-Oriented Programming in Java OOP: Encapsulation in Java OOP: Inheritance in Java OOP: Abstraction in Java OOP: Polymorphism in Java The method Overriding vs Overloading in Java Array in Java Data Structures with Java Collection framework in Java ArrayList in Java Set in Java Map in Java Date and Time in Java Exception in Java How to work with files in Java Design Patterns Generics in Java Multithreading in java Annotations in Java Reflection in Java Reflection & Annotations - The Powerful Combination Run terminal commands from Java Lambda in Java Unit Testing in Java Big O Notation for coding interviews Top Java coding interview questions for SDET