java 如何测试
单元测试(Unit Testing)
使用 JUnit 框架进行单元测试,验证单个方法或类的行为是否符合预期。
示例代码:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
void testAdd() {
Calculator calculator = new Calculator();
assertEquals(5, calculator.add(2, 3));
}
}
- 依赖配置(Maven):
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.8.2</version> <scope>test</scope> </dependency>
集成测试(Integration Testing)
验证多个模块或服务之间的交互是否正常,通常结合 Spring Boot Test 或 TestNG。
示例代码(Spring Boot):
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class UserServiceIntegrationTest {
@Autowired
private UserService userService;
@Test
void testUserCreation() {
User user = userService.createUser("testUser");
assertNotNull(user.getId());
}
}
模拟测试(Mocking)
使用 Mockito 模拟依赖对象的行为,隔离被测代码。

示例代码:
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.Test;
public class OrderServiceTest {
@Test
void testPlaceOrder() {
PaymentGateway mockGateway = mock(PaymentGateway.class);
when(mockGateway.process(anyDouble())).thenReturn(true);
OrderService service = new OrderService(mockGateway);
assertTrue(service.placeOrder(100.0));
}
}
性能测试(Performance Testing)
使用 JMH(Java Microbenchmark Harness)进行基准测试,评估代码性能。
示例配置:

import org.openjdk.jmh.annotations.*;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public class AlgorithmBenchmark {
@Benchmark
public void testSortPerformance() {
// 被测算法代码
}
}
- 运行需通过 Maven 插件或命令行启动。
覆盖率分析(Coverage)
使用 JaCoCo 或 Cobertura 生成测试覆盖率报告。
Maven 配置(JaCoCo):
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
自动化测试(CI/CD)
在持续集成中通过 Jenkins 或 GitHub Actions 自动运行测试。
GitHub Actions 示例:
name: Java CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: mvn test
测试最佳实践
- 测试名称应清晰描述场景(如
testAdd_WhenInputIsNegative_ThrowsException)。 - 避免依赖外部服务(如数据库),使用内存数据库或模拟对象替代。
- 定期重构测试代码,保持与生产代码同步。





