API 参考
使用指南-测试指南
测试指南章节。
测试指南
单元测试
@SpringBootTest
@TestConfiguration
class ProductServiceTest {
@Autowired
private ProductService productService;
@MockBean
private ProductRepository productRepository;
@Test
void shouldCreateProduct() {
CreateProductRequest request = CreateProductRequest.builder()
.name("测试商品")
.price(BigDecimal.valueOf(99.99))
.build();
Product result = productService.createProduct(request);
assertThat(result.getName()).isEqualTo("测试商品");
assertThat(result.getPrice()).isEqualTo(BigDecimal.valueOf(99.99));
}
}
集成测试
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations = "classpath:test.properties")
class ProductIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
void shouldCreateAndRetrieveProduct() {
// 创建商品
CreateProductRequest request = new CreateProductRequest("测试商品", BigDecimal.valueOf(99.99));
ResponseEntity<Product> createResponse = restTemplate.postForEntity(
"/api/products", request, Product.class);
assertThat(createResponse.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 查询商品
Long productId = createResponse.getBody().getId();
ResponseEntity<Product> getResponse = restTemplate.getForEntity(
"/api/products/" + productId, Product.class);
assertThat(getResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(getResponse.getBody().getName()).isEqualTo("测试商品");
}
}