Gymterview
middle

Как тестировать плагины Jira DC?

Тестирование плагинов Jira DC включает несколько уровней: юнит-тесты (Mockito), интеграционные тесты в контейнере Jira и UI-тесты.

Юнит-тесты (Mockito)

Пример
public class TaskConfigServiceTest {

    @Mock private ActiveObjects ao;
    @Mock private TaskConfig mockConfig;
    private TaskConfigService service;

    @Before
    public void setUp() {
        MockitoAnnotations.openMocks(this);
        service = new TaskConfigService(ao);
    }

    @Test
    public void testFindByProject() {
        when(mockConfig.getProjectKey()).thenReturn("PROJ");
        when(mockConfig.isEnabled()).thenReturn(true);
        when(ao.find(eq(TaskConfig.class), any(Query.class)))
                .thenReturn(new TaskConfig[]{mockConfig});

        TaskConfig[] results = service.findByProject("PROJ");

        assertEquals(1, results.length);
        assertEquals("PROJ", results[0].getProjectKey());
    }
}

Интеграционные тесты (@Wired)

Пример
@RunWith(AtlassianPluginsTestRunner.class)
public class TaskConfigServiceWiredTest {

    @Inject private TaskConfigService configService;
    @Inject private ActiveObjects ao;

    @Test
    public void testCreateAndFindConfig() {
        TaskConfig created = configService.create("TEST", "{\"test\":true}");
        assertNotNull(created);

        TaskConfig[] found = configService.findByProject("TEST");
        assertEquals(1, found.length);
    }
}

Команды запуска тестов

Пример
atlas-unit-test          # Юнит-тесты
atlas-integration-test   # Интеграционные тесты (запуск Jira + деплой плагина)

Частые ошибки

  • Тестирование только через UI (ручное) — не масштабируется, регрессии не ловятся
  • Мокирование ComponentAccessor — лучше использовать DI и мокировать инжектированные сервисы
  • Не тестировать на версии Jira, близкой к production — API может отличаться
  • Не тестировать upgrade tasks — миграция данных ломается при обновлении плагина

Как используется в 2026

  • Atlassian DC Performance Toolkit — для нагрузочного тестирования в кластерном окружении
  • Docker-based тестовые окружения стали стандартом (вместо atlas-integration-test для CI/CD)
  • Рекомендуемое покрытие: 70%+ юнит-тестами, ключевые сценарии — интеграционными
  • Тестирование обратной совместимости при rolling upgrades — требование для DC Marketplace

На собеседовании: покажите знание всех уровней тестирования. Юнит-тесты — обязательный минимум, мокайте все Jira-сервисы через Mockito. Интеграционные тесты медленные (запуск Jira), но ловят проблемы OSGi-совместимости. Используйте atlas-debug + IDE breakpoints для отладки.