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 для отладки.