Dalam seni bina perkhidmatan mikro Java, strategi ujian termasuk: Ujian unit: Uji komponen perkhidmatan secara berasingan untuk memastikan ketepatan komponen individu. Ujian integrasi: Uji interaksi antara perkhidmatan dan sahkan kerja kerjasama antara perkhidmatan. Ujian kontrak: Mengesahkan perjanjian atau konvensyen antara perkhidmatan untuk memastikan perkhidmatan mengikut kaedah komunikasi yang diharapkan. . Artikel ini meneroka beberapa strategi ujian dalam seni bina perkhidmatan mikro dan menyediakan kes praktikal untuk rujukan.
Ujian Unit
Tujuan:
Uji satu komponen perkhidmatan secara berasingan.
Alat:JUnit, Mockito
Contoh kod:
@Test public void testUserServiceFindById() { // 设置模拟对象 UserRepository userRepository = Mockito.mock(UserRepository.class); UserService userService = new UserService(userRepository); // 模拟用户查找操作 Mockito.when(userRepository.findById(1L)).thenReturn(Optional.of(new User(1L, "John Doe"))); // 断言查找结果 assertThat(userService.findById(1L).getId(), is(1L)); assertThat(userService.findById(1L).getName(), is("John Doe")); }
Contoh Kod:
@WebMvcTest(UserController.class) class UserControllerIntegrationTest { @Autowired private MockMvc mockMvc; @Autowired private UserRepository userRepository; @BeforeEach public void setup() { // 设置模拟用户数据 userRepository.deleteAll(); userRepository.save(new User(1L, "John Doe")); } @Test public void testFindById() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/users/1")) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().json("{id:1,name:'John Doe'}")); } }
Pakta, WireMock
Contoh kod:@SpringJUnitConfig class ContractTest { @Autowired private PactVerifier verifier; @TestTemplate @ExtendWith(SpringExtension.class) public void pactVerificationTest(MockServerServer wireMockServer, Pact providerState, Interaction interaction) throws IOException { verifier.verifyPact(providerState, interaction, wareMockServer.getUrl()); } @Pact(provider="UserService", consumer="Client") public RequestResponsePact createPact(MockServer mockServer) { return Pact.define( (request) -> { request.method("GET") .path("/") .headers(singletonMap("Content-Type", "application/json")); }, (response) -> { response.status(200) .body("{\"id\":1,\"name\":\"John Doe\"}") .headers(singletonMap("Content-Type", "application/json")); } ); } }
Atas ialah kandungan terperinci Menguji strategi dalam seni bina microservices Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!