스프링 입문 핵심 원리 테스트 코드 공부하다가 두 개를 각각 써봤는데 다 통과해서, 한 번 찾아보았다. 1) isNotSameAs 이 메서드는 두 개의 객체가 물리적으로 동일한 객체가 아님을 확인한다. 즉, 두 객체가 메모리 상에서 서로 다른 인스턴스를 가리키는 경우에만 성공한다. 객체의 참조(메모리 주소)를 비교하므로, 두 객체가 다른 인스턴스라면 true를 반환하고, 동일한 인스턴스라면 false를 반환. == 연산자와 유사한 기능을 수행 2) isNotEqualTo 이 메서드는 두 객체가 논리적으로 다른 값을 나타내는지 확인합니다 *논리적 동등성 객체의 equals 메서드를 사용하여 두 객체 간의 동등성을 확인 두 객체가 내용적으로 다르면 true를 반환하고, 내용이 동일하면 false를 반환 따라..
1. JUnit 자바 진영의 대표적인 Test FrameWork 단위 테스트를 위한 도구를 제공 단위 테스트란? 코드의 특정 모듈이 의도된 대로 동작하는지 테스트하는 절차를 의미 모든 함수와 메서드에 대한 각각의 테스트 케이스를 작성하는 것 어노테이션을 기반으로 테스트를 지원. 단정문(Assert)로 테스트 케이스의 기댓값에 대해 수정 결과를 확인할 수 있음. JUnit 5는 크게 Jupiter, Platform, Vintage 모듈로 구성됨 2. JUnit LifeCycle Anotation 어노테이션 설명 @Test 테스트용 메소드를 표현하는 어노테이션 @BeforeEach 각 테스트 메소드가 시작되기 전에 실행되어야 하는 메소드를 표현 @AfterEach 각 테스트 메소드가 시작된 후에 실행되어야 ..
초안 @Test @DisplayName("게시글 삭제 성공 테스트") void deleteBoard() { //given Board board = mock(Board.class); User user = mock(User.class); when(boardRepository.findById(board.getId())).thenReturn(Optional.of(board)); when(Optional.of(board).get().checkBoardWriter(user)).thenReturn(true); //when boardService.deleteBoard(board.getId(),user); //then verify(boardRepository).deleteById(board.getId()); } } 부연..
초안 @Test @DisplayName("게시글 목록 불러오기 테스트") void getBoards() { // given Pageable pageable = mock(Pageable.class); PageDto pageDto = mock(PageDto.class); when(pageDto.toPageable()).thenReturn(pageable); when(boardRepository.findAll(pageable)).thenReturn(Page.empty()); // when Page pagingProductResponse = boardService.getBoards(pageDto); // then assertThat(pagingProductResponse).isNotNull(); } @Test ..
초안 @Test @DisplayName("게시글 업데이트 성공 테스트") void updateBoard() { // given User user = mock(User.class); Board board = mock(Board.class); BoardRequestDto boardRequestDto = mock(BoardRequestDto.class); when(boardRepository.findById(board.getId())).thenReturn(Optional.of(board)); when(Optional.of(board).get().checkBoardWriter(user)).thenReturn(true); // 이 두 줄은 깡통에게 "이런 질문이 오면 무조건 이렇게 대답해" 하고 명령을 넣어놓는 ..
일단은 생성 성공 테스트부터 초안 @ExtendWith(MockitoExtension.class) class BoardServiceImplTest { @Mock BoardRepository boardRepository; @InjectMocks BoardServiceImpl boardService; @Test @DisplayName("게시글 생성 성공 테스트") void createBoard() { BoardRequestDto requestDto = BoardRequestDto.builder() .title("title1") .content("content1") .build(); User user = mock(User.class); //when boardService.createBoard(requestDt..
전체 코드(한꺼번에 연달아서 붙여넣기) 컨트롤러 @RestController @RequestMapping("/boards") @RequiredArgsConstructor public class BoardController { private final BoardService boardService; private final SetHttpHeaders httpHeaders; // 게시글 생성 @PostMapping public ResponseEntity createBoard( @RequestBody BoardRequestDto boardRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) { boardService.createBoard(boar..
원본 소스 코드 UserService public interface UserService { ProfileResponseDto showProfile(Long profileId); } UserServiceImpl @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { // UserServiceImpl로 수정 부탁드립니다. private final UserRepository userRepository; private final JwtUtil jwtUtil; private final PasswordEncoder passwordEncoder; @Override public ProfileResponseDto sh..