본문 바로가기
728x90
반응형

Development/Java67

Spring Boot Test Case 작성에 대한 생각 - Controller Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test Repository, Service 에 대한 테스트를 살펴봤으니 이제 Controller 테스트를 확인해보자. Controller Test 에는 @WebMvcTest 를 사용했다. Controller 는 확인해야 할 부분이 다음과 같다. 1. request 를 요청한 url 과 파라메터가 정확한지 여부. 2. 정상 처리 되었을데 요구한 응답을 보내주는지. 3. 비정상일때에 response 에 상태 코드가 정확히 전.. 2021. 2. 18.
Spring Boot Test Case 작성에 대한 생각 - Service Test 2021/02/17 - [Development/Java] - Spring Boot Test Case 작성에 대한 생각 - Repository Test 지난 글에 이어 이번에는 Service 테스트에 대해서 적어보려 한다. 아래는 내가 작성한 UserService 에 대한 테스트케이스 이다. @RunWith(MockitoJUnitRunner.class) public class UserServiceTest { private UserService userService; @Mock private UserRepository userRepository; private Users user1; @Before public void setup(){ userService = new UserService(userReposit.. 2021. 2. 17.
Spring Boot Test Case 작성에 대한 생각 - Repository Test 테스트 케이스를 작성을 할때 내가 어렵게 생각했던것은 2가지 이다. 1. Mock 으로 테스트케이스를 작성할 것인가? 아니면 실제 데이터를 가지고 작성할 것인다. 2. 테스트용 DB를 따로 둬야 할까? 이 2가지가 항상 풀리지 않는 난제 같았다. 그런데 갑자기 뭔가 기준을 정해서 하면 되지 않을까 라는 생각이 들었다. 어떻게 보면 당연한 이야기 이긴 하지만. 테스트케이스를 작성하려는 클래스들의 역할에 생각해 보고 그에 맞는 테스트 케이스를 작성하면 되는 것이다. Spring Boot 프로젝트를 보면 테스트케이스를 작성하는 클래스들로 다음과 같은 것들을 꼽을 수 있다. 1. Repository 2. Service 3. Controller 4. RestApiController 그럼 우선 이번 글에서는 Rep.. 2021. 2. 17.
Spring Boot Data Jpa 를 사용한 Paging. Spring Data Jpa 를 사용하게 되면서 전에 쓰지 않았던 paging 기능에 대해서 이야기 해보려 한다. Domain 을 조회하는 Repository interface를 만들때에 JpaRepository 를 상속해서 사용하는 경우가 많다. 이 JpaRepository 를 살펴보면 내부에 이렇게 구현이 되어있다. public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor { ..... } 그리고 다시 PagingAndSortingRepository 를 살펴보면 다음과 같다. public interface PagingAndSortingRepository extends CrudRepository { .. 2019. 11. 11.
[SpringBoot] @RequestBody 에 들어가는 Object 는 No-Argument Constructor 가 존재해야 한다. 아래와 같이 @RestController 에 메소드가 있다고 생각해보자. @PostMapping public ResponseEntity getResDto(@RequestBody AccountReqDto dto){ return ResponseEntity.ok(AccountResDto.builder().email("test@test.com") .loginId("test") .username("tester") .build() ); } Post 요청에 대해서 AccountReqDto 라는 Object 형태의 파라메터를 받아서 Response 를 리턴하는 메소드 이다. AccountReqDto 는 다음과 같이 되어있다. @Getter public class AccountReqDto { private String .. 2019. 10. 21.
[Spring Boot] There is no PasswordEncoder mapped for the id "null" 내 github 에 있는 프로젝트들중 예전에 만들었던 건데 내용좀 다시 볼겸 수정을 하고 있었다. 사실, 간단한거 빼고는 잘 작동을 안하는것 같다. 그래서 이번에 라이브러리 버전 업데이트 좀 할겸 소스를 수정을 했다. Spring Boot 버전도 최신 버전으로 수정을 하고 Security 버전도 수정을 했다. 그리고 나서 간단히 로그인을 해보려고 하니 다음과 같은 에러가 발생했다. There is no PasswordEncoder mapped for the id "null" 음.. ? 찾아보니 Spring Security 버전이 올라가면서 PasswordEncoder가 변경되면서 발생한 에러였다. The general format for a password is: {id}encodedPassword Su.. 2019. 9. 9.
Spring Boot Controller Test 하다가 마주친 IllegalArgumentException 컨트롤러를 만들어서 Testcase 를 작성한 후에 성공할거라 믿고 돌려봤는데 IllegalArgumentException 이 발생했다.컨트롤러 코드와 테스트 케이스 코드는 각각 다음과 같다. UserController.java123456@GetMapping(value = "/users/{email}")public UserDto.Res getUser(@PathVariable @Valid final String email){ Optional users = userService.findByEmailValue(email); return new UserDto.Res(users.get());}Colored by Color Scriptercs UserControllerTest.java12345678910111213.. 2019. 3. 7.
java.util.Date 쓰다 삽질한 내용.... 최근에 시간 관련 Data 를 가지고 삽질을 해서 간단히 적어본다. 상황은 이렇다. 테이블에 특정 Data 를 저장 하고 있었는데 colum 에 언제나 그렇듯 생성 날짜, 시간 형태의 컬럼이 존재하고 있었다. Timestamp type 이었고 Data 는 잘 insert 가 되는 상황이었다. 그런데 이상하게 나는 분명 UTC 기준으로 Data 가 insert 될거라 생각을 했는데 그게 아니었다. Local 기준으로 Data 가 들어가고 있었다. 그러다 보니 이 Data를 사용하는 곳에서 예상치 못한 오류가 발생했다. 123456@Testpublic void jodaTime(){ DateTime dateTime = new DateTime(DateTimeZone.UTC); System.out.println(.. 2019. 1. 25.
[SpringBoot] Properties 우선순위 Spring Boot 에서 Properties 를 설정하는 방법에 대해서 알아보자. 우선 Properties 파일을 3개를 만들어 보았다.src/main/resources 하위에 application.properties, application-server1.properties, application-server2.properties 이렇게 3개의 파일을 만들었다. application.properties1234application-name: my applicatoinspring.output.ansi.enabled=alwayslogging.level.org.springframework.web=debugserver.port=9000cs application-server1.properties1server.po.. 2018. 6. 7.
728x90
반응형