mcpField
J
junit

junit

github.com/partme-ai测试与质量716117 次安装3 周前更新
代码仓库

关于 junit

用于编写 Java 和 Kotlin 单元测试的技能,涵盖 JUnit 4 和 JUnit 5。内容包括测试生命周期、断言、参数化测试、模拟依赖及 Maven 或 Gradle 测试执行。

主要功能

  1. 01编写 JUnit 4 和 JUnit 5 测试
  2. 02使用生命周期注解和断言
  3. 03编写参数化测试
  4. 04用 Mockito 模拟依赖
  5. 05通过 Maven 和 Gradle 执行测试

适用场景

  1. 01创建 Java 或 Kotlin 单元测试
  2. 02围绕初始化和清理组织测试
  3. 03针对多种输入执行测试
  4. 04通过模拟依赖隔离被测单元

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/partme-ai/full-stack-skills --skill junit

安装后在 Claude Code 中输入/junit确认已加载。

附带文件LICENSE.txt

详细介绍

适用场景

当用户希望执行以下操作时,请使用此技能:

  • 使用 JUnit 4 或 JUnit 5(Jupiter)编写 Java 或 Kotlin 单元测试
  • 使用注解(@Test、@BeforeEach、@AfterEach、@ParameterizedTest)
  • 使用断言(assertEquals、assertThrows、assertAll)
  • 集成 Mockito 或 AssertJ,以进行模拟和流畅断言
  • 使用 Maven Surefire 或 Gradle 配置测试执行

如何使用此技能

工作流
  1. 编写带有 @Test 注解的测试类和方法
  2. 使用生命周期注解设置和清理测试状态
  3. 使用断言验证预期行为
  4. 使用 Mockito 模拟依赖项,以隔离单元测试
1. JUnit 5 基本测试
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {
    @Test
    void shouldAddTwoNumbers() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3));
    }

    @Test
    void shouldThrowOnDivideByZero() {
        Calculator calc = new Calculator();
        assertThrows(ArithmeticException.class, () -> calc.divide(1, 0));
    }
}
2. 生命周期注解
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;

class UserServiceTest {
    private UserService userService;

    @BeforeEach
    void setUp() {
        userService = new UserService(new InMemoryUserRepository());
    }

    @AfterEach
    void tearDown() {
        // Clean up resources
    }
}
3. 参数化测试
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class StringTest {
    @ParameterizedTest
    @CsvSource({"hello,5", "'',0", "junit,5"})
    void shouldReturnCorrectLength(String input, int expected) {
        assertEquals(expected, input.length());
    }
}
4. 使用 Mockito 进行模拟
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
class OrderServiceTest {
    @Mock private OrderRepository orderRepository;
    @InjectMocks private OrderService orderService;

    @Test
    void shouldSaveOrder() {
        Order order = new Order("item-1", 2);
        orderService.placeOrder(order);
        verify(orderRepository).save(order);
    }
}
5. 运行测试
# Maven
mvn test

# Gradle
gradle test

# With coverage (JaCoCo)
mvn test jacoco:report

最佳实践

  • 保持测试独立且可重复;避免依赖执行顺序或外部服务
  • 使用 Mockito 将被测单元与其依赖项隔离
  • 使用描述性名称命名测试(例如,shouldReturnEmptyListWhenNoUsersExist)
  • 平衡测试覆盖率与速度;在 CI 中运行完整测试套件
  • 使用 @Nested 类对相关测试用例进行分组

资源

关键词

junit、JUnit 5、JUnit Jupiter、单元测试、Java、Kotlin、断言、Mockito、参数化测试、BeforeEach、AfterEach、测试生命周期

评论

支持 Markdown