java-junitOfficialJava JUnit GitHub Copilot
github/awesome-copilot
Java JUnit.
Установка
npx -y skills add github/awesome-copilot --skill java-junit --agent claude-codeJUnit 5+ — лучшие практики
Цель — помочь писать эффективные юнит-тесты на JUnit 5, охватывая как стандартный, так и data-driven подход.
Настройка проекта
- Используйте стандартную структуру проекта Maven или Gradle.
- Размещайте исходники тестов в
src/test/java. - Включите зависимости
junit-jupiter-api,junit-jupiter-engineиjunit-jupiter-paramsдля параметризованных тестов. - Запускайте тесты командами сборки:
mvn testилиgradle test.
Структура тестов
- Классы тестов — с суффиксом
Test, напр.CalculatorTestдля классаCalculator. - Используйте
@Testдля тестовых методов. - Следуйте паттерну Arrange-Act-Assert (AAA).
- Называйте тесты по описательному соглашению, напр.
methodName_should_expectedBehavior_when_scenario. - Используйте
@BeforeEachи@AfterEachдля настройки/очистки на каждый тест. - Используйте
@BeforeAllи@AfterAllдля настройки/очистки на класс (статические методы). - Используйте
@DisplayNameдля человекочитаемых имён классов и методов.
Стандартные тесты
- Держите тесты сфокусированными на одном поведении.
- Избегайте проверки нескольких условий в одном методе.
- Делайте тесты независимыми и идемпотентными (любой порядок запуска).
- Избегайте взаимозависимостей между тестами.
Data-driven (параметризованные) тесты
@ParameterizedTest— пометить метод как параметризованный.@ValueSource— простые литеральные значения (строки, int и т.д.).@MethodSource— ссылка на фабричный метод, дающий аргументы какStream,Collectionи т.д.@CsvSource— инлайн значения через запятую.@CsvFileSource— CSV-файл из classpath.@EnumSource— константы enum.
Проверки (assertions)
- Используйте статические методы из
org.junit.jupiter.api.Assertions(assertEquals,assertTrue,assertNotNull). - Для более «текучих» и читаемых проверок рассмотрите AssertJ (
assertThat(...).is...). - Используйте
assertThrowsилиassertDoesNotThrowдля проверки исключений. - Группируйте связанные проверки через
assertAll, чтобы все проверились до падения теста. - Используйте описательные сообщения в проверках для ясности при сбое.
Мокирование и изоляция
- Используйте мок-фреймворк вроде Mockito для моков зависимостей.
- Используйте аннотации
@Mockи@InjectMocksиз Mockito для упрощения создания и внедрения моков. - Используйте интерфейсы для облегчения мокирования.
Организация тестов
- Группируйте тесты по фиче/компоненту через пакеты.
- Используйте
@Tagдля категоризации (@Tag("fast"),@Tag("integration")). - Используйте
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)и@Orderдля контроля порядка, когда это строго необходимо. - Используйте
@Disabled, чтобы временно пропустить тест/класс, с указанием причины. - Используйте
@Nestedдля группировки тестов во вложенном классе ради лучшей организации.
Из того же репозитория
git-commitOfficial — git коммит GitHub Copilot
github/awesome-copilot
Git коммит.
gh-cliOfficial — GitHub CLI Awesome Copilot
github/awesome-copilot
GitHub CLI.
excalidraw-diagram-generatorOfficial — генератор диаграмм Excalidraw GitHub
github/awesome-copilot
Генератор диаграмм Excalidraw.
documentation-writerOfficial — писатель документации GitHub Copilot
github/awesome-copilot
Писатель документации.
prdOfficial — PRD GitHub Copilot
github/awesome-copilot
Документ требований к продукту.
refactorOfficial — рефакторинг GitHub Copilot
github/awesome-copilot
Рефакторинг.
