Какой подход к тестированию собственного кода вы используете?

«Какой подход к тестированию собственного кода вы используете?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использую многоуровневый подход, фокусируясь на модульных и интеграционных тестах.

1. Модульные тесты (JUnit 5 + Mockito):

@Test
void calculateDiscount_ShouldApplyTenPercent_ForPremiumUser() {
    // Arrange
    User premiumUser = new User("John", Tier.PREMIUM);
    DiscountService service = new DiscountService();

    // Act
    BigDecimal discount = service.calculateDiscount(premiumUser, new BigDecimal("100.00"));

    // Assert
    assertEquals(new BigDecimal("10.00"), discount);
}

2. Интеграционные тесты: Проверяю взаимодействие с БД, внешними API (с использованием тестовых контейнеров или мок-серверов).

3. Практики:

  • Покрытие: Стремлюсь к высокому покрытию критических путей, а не к 100% ради метрики.
  • Читаемость: Имена тестов по шаблону [Method]_[Scenario]_[ExpectedResult].
  • CI/CD: Все тесты автоматически запускаются в пайплайне сборки (Maven/Gradle).

Цель: Раннее обнаружение регрессий и уверенность при рефакторинге.