You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Цель: измерить реальное качество тестов (а не строчное покрытие) через мутации и убить выживших мутантов в критичной логике движений/остатков. Зависимость: INIT-6, #5, #6, #9.
Что сделать
Подключи gradle-плагин:
plugins { id 'info.solidsoft.pitest' version '1.15.+' }
pitest {
targetClasses = ['com.warehouse.service.*']
mutators = ['STRONGER']
mutationThreshold =70// подбери, не ставь 100
}
Запусти ./gradlew pitest, разбери отчёт build/reports/pitest. Найди выживших мутантов в StockService / расчёте остатка (граничные < vs <=, инверсии условий валидации из Валидация остатков #9) и допиши тесты, которые их убивают.
Трудные места: это про качество тестов, а не покрытие — выживший мутант значит «тест не проверяет поведение». Порог ставь разумный (репозитории/мапперы/DTO можно исключить из targetClasses), иначе долго и шумно. Прогон PITest тяжёлый — гонять отдельной gradle-таской, не в каждом test.
Acceptance criteria
./gradlew pitest отрабатывает, генерит отчёт
Mutation score по сервисам движений/остатков выше заданного порога
Цель: измерить реальное качество тестов (а не строчное покрытие) через мутации и убить выживших мутантов в критичной логике движений/остатков.
Зависимость: INIT-6, #5, #6, #9.
Что сделать
plugins { id 'info.solidsoft.pitest' version '1.15.+' } pitest { targetClasses = ['com.warehouse.service.*'] mutators = ['STRONGER'] mutationThreshold = 70 // подбери, не ставь 100 }./gradlew pitest, разбери отчётbuild/reports/pitest. Найди выживших мутантов вStockService/ расчёте остатка (граничные<vs<=, инверсии условий валидации из Валидация остатков #9) и допиши тесты, которые их убивают.targetClasses), иначе долго и шумно. Прогон PITest тяжёлый — гонять отдельной gradle-таской, не в каждомtest.Acceptance criteria
./gradlew pitestотрабатывает, генерит отчёт