Как правильно писать unit тесты java

Аватар пользователя Иван Полежаев
Иван Полежаев
08 апреля 2023

Для написания тестов на Java с использованием фреймворка JUnit и автоматической сборки с помощью Gradle, необходимо выполнить несколько шагов:

  • Создать проект Gradle в IDE (например, в IntelliJ IDEA).
  • Добавить зависимость JUnit в файл build.gradle:
dependencies {
    testImplementation 'junit:junit:4.13.2'
}

  • Создать тестовый класс, который будет содержать методы с аннотацией @Test:
import org.junit.Test;
import static org.junit.Assert.*;

public class MyTest {

    @Test
    public void testSum() {
        assertEquals(4, 2 + 2);
    }

    @Test
    public void testMax() {
        int[] numbers = {1, 2, 3, 4, 5};
        int max = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > max) {
                max = numbers[i];
            }
        }
        assertEquals(5, max);
    }
}
  • Запустить тесты с помощью команды gradle test в терминале или из IDE.

После выполнения этих шагов, Gradle автоматически соберет и запустит все тесты, которые находятся в пакете src/test/java. Результаты тестирования будут отображены в консоли или в специальной вкладке в IDE, и вы сможете увидеть, прошли ли все тесты успешно или есть ошибки.

0 0
Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
26 августа 2024

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

Для начала выберем фреймворк для тестирования, например JUnit:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class MyClassTest {
    @Test
    void testMethod() {
        // тест
    }
}

При написании тестов следуйте принципу "один тест - одна проверка".

@Test
void testAddition() {
    Calculator calc = new Calculator();
    assertEquals(4, calc.add(2, 2), "2 + 2 должно равняться 4");
}

Структурируйте тесты по схеме AAA (Arrange-Act-Assert), или Подготовка-Действие-Проверка:

@Test
void testDivision() {
    // Arrange
    Calculator calc = new Calculator();

    // Act
    double result = calc.divide(10, 2);

    // Assert
    assertEquals(5, result, "10 / 2 должно равняться 5");
}

Для проверки множества случаев используйте параметризованные тесты

@ParameterizedTest
@CsvSource({"1, 1, 2", "2, 3, 5", "-1, 1, 0"})
void testAddition(int a, int b, int expected) {
    Calculator calc = new Calculator();
    assertEquals(expected, calc.add(a, b));
}

В случае тестирования с побочными эффектами используйте моки и стабы

@Test
void testUserService(@Mock UserRepository repo) {
    UserService service = new UserService(repo);
    when(repo.findById(1L)).thenReturn(Optional.of(new User(1L, "John")));

    User user = service.getUserById(1L);
    assertEquals("John", user.getName());
}
0 0
Аватар пользователя Иван Полежаев
Иван Полежаев
08 апреля 2023

Для написания теста на Java необходимо использовать какой-либо фреймворк для тестирования, например, JUnit. Рассмотрим пример написания теста на JUnit.

  • Подключите зависимость JUnit в свой проект. Если вы используете Maven, добавьте следующий код в pom.xml:
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13.2</version>
  <scope>test</scope>
</dependency>

  • Создайте класс для тестирования. Например, если вы хотите протестировать класс Calculator, создайте класс CalculatorTest:
import org.junit.Test;
import static org.junit.Assert.*;

public class CalculatorTest {

    @Test
    public void testAddition() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result);
    }

    @Test
    public void testSubtraction() {
        Calculator calculator = new Calculator();
        int result = calculator.subtract(5, 3);
        assertEquals(2, result);
    }
}
  • Создайте методы тестирования. Каждый метод должен быть аннотирован аннотацией @Test. Внутри метода вызывайте методы, которые вы хотите протестировать, и сравнивайте ожидаемый результат с фактическим. В этом примере мы тестируем методы add и subtract класса Calculator

  • Запустите тесты. В большинстве сред разработки можно запустить тесты, нажав на кнопку "запустить тесты". Вы также можете запустить тесты из командной строки с помощью команды mvn test (если вы используете Maven) или java -cp <classpath> org.junit.runner.JUnitCore <test class name>

Это только основы, но они помогут вам начать написание юнит-тестов в Java

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.

Похожие вопросы

1
ответ
1
ответ
1
ответ
2
ответа