Какие фреймворки и инструменты используются для написания тест-кейсов?

Ответ

Выбор инструмента зависит от типа и уровня тестирования.

Юнит-тестирование (Unit Testing):

  • JUnit 5/Jupiter: Современный стандарт для Java. Поддерживает параметризованные тесты, расширения.
    @Test
    @DisplayName("Сложение двух положительных чисел")
    void additionOfPositiveNumbers() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3), "2 + 3 должно быть равно 5");
    }
  • TestNG: Альтернатива с мощными возможностями для параметризации и группировки тестов.

Мокирование зависимостей:

  • Mockito: Стандарт для создания mock- и stub-объектов.

Интеграционное и E2E-тестирование:

  • Spring Boot Test (@SpringBootTest): Для поднятия контекста Spring.
  • Selenium/Playwright: Для автоматизации UI-тестов в браузере.
  • REST Assured: Для удобного тестирования REST API.
    given()
        .param("name", "John")
    .when()
        .get("/greet")
    .then()
        .statusCode(200)
        .body("message", equalTo("Hello, John!"));
  • Cucumber: Для Behavior-Driven Development (BDD). Тесты пишутся на языке Gherkin в .feature файлах, а шаги реализуются на Java.

Ответ 18+ 🔞

Да ты посмотри, какая тут, блядь, кухня развернулась! Про тестирование. Ну, типа, выбор-то инструмента — он, сука, как выбор оружия: от того, кого ты собрался мочить, зависит, брать ли тебе рогатку или сразу гранатомёт.

Юнит-тесты, эти мелкие пиздюки (Unit Testing): Тут всё просто, как три копейки. Берешь один кусок кода, изолируешь его от всего мира и начинаешь ебашить.

  • JUnit 5 (он же Jupiter): Это сейчас, блядь, царь и бог. Все его юзают. Умеет в параметры, в расширения — красота, ёпта.
    @Test
    @DisplayName("Сложение двух положительных чисел")
    void additionOfPositiveNumbers() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3), "2 + 3 должно быть равно 5");
    }

    Смотри, как просто: создал калькулятор, ткнул в него цифрами, и ждёшь, что он не обосрётся. Если обосрётся — сразу видно, где.

  • TestNG: Ну, это такая альтернатива, для тех, кому JUnit 5 уже мозолит глаза. Тоже мощная штука, особенно если тесты надо по группам раскидать.

А вот это — мой любимый цирк: подмена зависимостей (Мокирование):

  • Mockito: Это, блядь, волшебная палочка. У тебя есть класс, который орет в базу, шлёт письма на почту и вызывает чужой микросервис? Нахуй всё это! Берёшь Mockito и создаёшь муляж, который делает вид, что он база, почта и микросервис, но на самом деле он просто кивает головой и говорит то, что ты ему приказал. Идеально, чтобы не ебаться с окружением при юнит-тестах.

А теперь, сука, тяжёлая артиллерия: интеграционное и сквозное тестирование (E2E): Тут уже не поиграешься — надо поднимать пол-приложения и смотреть, как оно, блядь, в сборе работает.

  • Spring Boot Test (@SpringBootTest): Это когда ты говоришь Spring'у: «Вставай, сука, не спи! Подними весь свой контекст, все бины, всю эту свою ебучую магию, я хочу потестировать, как оно всё вместе дружит (или не дружит)».
  • Selenium / Playwright: Это уже для полных мазохистов, которые хотят автоматизировать браузер. Представь: программа открывает хром, кликает кнопки, заполняет формы — как живой пользователь, только тупой и безотказный. Playwright — это типа новый крутой пацан в этом деле.
  • REST Assured: А это для тех, у кого нет UI, а есть только API. Штука, которая позволяет тестировать REST-эндпоинты так, будто ты их руками в Postman'е дёргаешь, но кодом.
    given()
        .param("name", "John")
    .when()
        .get("/greet")
    .then()
        .statusCode(200)
        .body("message", equalTo("Hello, John!"));

    Читай как: «Допустим, я шлю параметр "John". Когда я дергаю GET /greet, тогда я ожидаю, что статус код будет 200 и в теле ответа message будет "Hello, John!"». Если не так — пошёл нахуй, разработчик.

  • Cucumber: О, это отдельная, блядь, религия! BDD, ёпта. Тут сначала бизнес-аналитик или менеджер (ну, тот, кто умеет читать) пишет тест на человеческом языке в .feature файле. Типа: «Дано я на главной странице, когда я кликаю "Купить", тогда у меня в корзине появляется товар». А потом уже программисты, скрипя зубами, пишут код, который эти красивые фразы превращает в реальные действия. Выглядит охуенно в отчётах, но иногда, блядь, проще написать десять обычных тестов, чем один такой feature-файл согласовать.

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