স্প্রিং বুট প্রজেক্ট প্রথমে আমাদের তৈরি করতে হবে । ডিপেন্ডেন্সি হিসেবে আমাদের দিতে হবে -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
আমারা এখন *এক্তা ইউজার এ পি আই এর জন্য ইউনিট টেস্টিং লিখব ।
সব গুলা ধাপ একের পর এক দেয়া হল ঃ
import com.fasterxml.jackson.databind.ObjectMapper;
import com.tnpay.demoservice.demo.dto.request.UserRequestDto;
import com.tnpay.demoservice.demo.entity.User;
import com.tnpay.demoservice.demo.service.UserService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(UserController.class)
public class UserControllerTest {
private static final String END_POINT_PATH="/api/user";
@Autowired private MockMvc mockMvc;
@Autowired private ObjectMapper objectMapper;
@MockBean UserService userService;
@MockBean UserController userController;
@BeforeEach
void setUp(){
userService = mock(UserService.class);
}
@Test
void testAddShouldReturn400BadRequest() throws Exception {
UserRequestDto newUser = UserRequestDto.builder()
.name("")
.email("")
.phone("")
.build();
String requestBody = objectMapper.writeValueAsString(newUser);
mockMvc.perform(post(END_POINT_PATH).contentType("application/json")
.content(requestBody))
.andExpect(status().isBadRequest())
.andDo(print());
}
@Test
void testAddShouldReturn201Created() throws Exception {
// Prepare a DTO for the request
UserRequestDto newDto = UserRequestDto.builder()
.name("John Doe")
.email("john@example.com")
.phone("01753155400")
.build();
// Mock the behavior of your service's create method
User createdEntity = User.builder()
.name(newDto.getName())
.email(newDto.getEmail())
.phone(newDto.getPhone())
.build();
when(userService.create(any(UserRequestDto.class))).thenReturn(createdEntity);
// Convert the DTO to JSON
String requestBody = objectMapper.writeValueAsString(newDto);
mockMvc.perform(post(END_POINT_PATH)
.contentType("application/json")
.content(requestBody))
.andExpect(status().isOk())
.andDo(print());
}
@Test
void testGetByIdReturn200OK() throws Exception{
Long userId = 1L;
User user = User.builder()
.name("Test User")
.email("test@example.com")
.phone("1234567890")
.build();
user.setId(userId);
when(userService.getSingle(userId)).thenReturn(user);
mockMvc.perform(get(END_POINT_PATH+"/{id}", userId))
.andExpect(status().isOk())
.andDo(print());
}
}
sdfsdf এখন আউটপুট ভিজুয়ালাইজ করার জন্য আমরা
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
এটা অ্যাড করব ।
এর পর রান করার জন্য ঃ mvn clean verify
এই কমান্ড টি চালাব ।
তারপর প্রজেক্ট এর ঃ \target\site\jacoco
এই লোকেশন এ গিয়ে index.htmlএই ফাইল টি রান করব ।
0 Comments