java如何测试方法
测试 Java 方法的基本方法
单元测试是验证 Java 方法功能的主要方式,常用的测试框架包括 JUnit 和 TestNG。
使用 JUnit 进行测试
JUnit 是最流行的 Java 单元测试框架,可以通过注解和断言来验证方法的行为。
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calculator = new Calculator();
assertEquals(5, calculator.add(2, 3), "2 + 3 应该等于 5");
}
@Test
public void testDivide() {
Calculator calculator = new Calculator();
assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
}
}
@Test标记测试方法assertEquals验证预期结果assertThrows检查是否抛出异常
使用 Mockito 进行模拟测试
当方法依赖外部服务(如数据库或 API)时,可以使用 Mockito 模拟依赖项。
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.*;
public class UserServiceTest {
@Test
public void testGetUserById() {
UserRepository mockRepo = mock(UserRepository.class);
when(mockRepo.findById(1)).thenReturn(new User(1, "Alice"));
UserService userService = new UserService(mockRepo);
User user = userService.getUserById(1);
assertEquals("Alice", user.getName());
verify(mockRepo, times(1)).findById(1);
}
}
mock创建模拟对象when(...).thenReturn(...)定义模拟行为verify检查方法调用次数
参数化测试
使用 @ParameterizedTest 测试不同输入组合。
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class StringUtilsTest {
@ParameterizedTest
@ValueSource(strings = {"racecar", "madam", "level"})
public void testIsPalindrome(String input) {
assertTrue(StringUtils.isPalindrome(input));
}
}
集成测试
使用 Spring Boot Test 测试整个应用流程。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testGetUser() {
ResponseEntity<User> response = restTemplate.getForEntity("/users/1", User.class);
assertEquals(200, response.getStatusCodeValue());
assertEquals("Alice", response.getBody().getName());
}
}
性能测试
使用 JMH(Java Microbenchmark Harness)进行基准测试。

import org.openjdk.jmh.annotations.*;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class AlgorithmBenchmark {
@Benchmark
public void testFastAlgorithm() {
FastAlgorithm.process();
}
@Benchmark
public void testSlowAlgorithm() {
SlowAlgorithm.process();
}
}
通过以上方法,可以全面测试 Java 方法的正确性、性能和集成行为。






