Каждая программа нуждается в тестировании. Существует много видов тестирования. Сегодня мы поговорим о модульном тестировании.

  1. Модульное тестирование.
  2. Юнит.
  3. ТДД.

Модульное тестирование

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

Юнит-тестирование — это набор автоматизированных тестовых случаев. Обычно он находится в том же исходном проекте и создается самими разработчиками.

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

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

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

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

Юнит

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