Spring Boot61 [Spring Security] 스프링 시큐리티 인증객체가 있는 컨트롤러 테스트 하기 요즘에 테스트 코드 짜는 것에 집중하고 있고 많이 공부하고 있습니다. 현재 전에 작업했던 java 8, spring, mybatis, jsp, 했던 프로젝트를 java 11, spring boot, jpa , thymeleaf, security를 사용하여 마이그레이션하고 있습니다. https://github.com/KOSMO-Togather Spring Boot/Spring Security 2022. 8. 16. [Batch] ItemWriter 데이터 쓰기 ItemWriter 소개 ItemWriter는 Spring Batch에서 사용하는 출력 기능입니다. Spring Batch가 처음 나왔을 때, ItemWriter는 ItemReader와 마찬가지로 item을 하나씩 다루었습니다. 그러나 Spring Batch2와 청크 (Chunk) 기반 처리의 도입으로 인해 ItemWriter에도 큰 변화가 있었습니다. 이 업데이트 이후 부터 ItemWriter는 item 하나를 작성하지 않고 Chunk 단위로 묶인 item List를 다룹니다. 이 때문에 ItemWriter 인터페이스는 ItemReader 인터페이스와 약간 다릅니다. Reader의 read()는 Item 하나를 반환하는 반면, Writer의 write()는 인자로 Item List를 받습니다. 이를 그.. Spring Boot/Batch 2022. 8. 8. [Batch] ItemReader (JDBC,JPA) Spring 프레임워크의 강점 중 하나는 개발자가 비즈니스 로직에만 집중할 수 있도록 JDBC와 같은 문제점을 추상화한 것입니다. 이를 보고 서비스 추상화라고 합니다. 그래서 Spring Batch 개발자들은 Spring 프레임워크의 JDBC 기능을 확장했습니다. 일반적으로 배치 작업은 많은 양의 데이터를 처리해야 합니다. 보통 실시간 처리가 어려운 대용량 데이터나 대규모 데이터일 경우에 배치 애플리케이션을 작업합니다. 수백만 개의 데이터를 조회하는 쿼리가 있는 경우에 해당 데이터를 모두 한 번에 메모리에 불러오길 원하는 개발자는 없을 것입니다. 그러나 Spring의 JdbcTemplate은 분할 처리를 지원하지 않기 때문에 (쿼리 결과를 그대로 반환하니) 개발자가 직접 limit, offset을 사용하.. Spring Boot/Batch 2022. 8. 8. [Mockito] BDD 스타일 API + BDD 이번 포스팅에선 Mockito가 지원하고 있는 BDD 스타일 API에 대해 알아보겠습니다. 먼저 BDD에 대한 개념부터 알아보고 가겠습니다. BDD (Behavior Driven Development)란? TDD (Test Driven Development)는 "테스트"를 기준으로 하는 개발 방법론입니다. BDD (Behavior Driven Development)는 "행동"을 기준으로 하는 개발 방법론입니다. TDD를 참고했다고 하네요. 위키피디아에 나와있는 BDD 설계 방법입니다. 테스트할 때 Title, Narrative까진 사용하지 않고 Acceptance criteria만 사용합니다. Title An explicit title. Narrative A short introductory sectio.. Spring Boot/Mockito 2022. 8. 7. [Mockito] Verify(검증) 이번 포스팅에선 Mockito를 이용해 스터 빙한 메서드가 제대로 실행이 됐는지 확인해보는 메서드에 대해서 알아보겠습니다. 스터 빙한 메서드를 검증하는 방법 verify 메서드를 이용해서 스터 빙한 메서드가 실행됐는지, n번 실행됐는지, 실행이 초과되지 않았는지 등 다양하게 검증해볼 수 있습니다. verify(T mock, VerificationMode mode) 위와 같은 형태로 쓰며 VerificationMode는 검증할 값을 정의하는 메서드입니다. 메소드명 설명 (테스트 내에서~) times(n) 몇 번이 호출됐는지 검증 never 한 번도 호출되지 않았는지 검증 atLeastOne 최소 한 번은 호출됐는지 검증 atLeast(n) 최소 n 번이 호출됐는지 검증 atMostOnce 최대 한 번이 호.. Spring Boot/Mockito 2022. 8. 7. [Mockito] Mock 객체 Stubbing Mock 객체의 행동이란 리턴 값이 있는 메소드는 모두 Null 을 리턴하고 있다. Optional 타입인 경우 Optional.empty로 리턴 Primitive 타입은 모두 Primitive 값을 따르고 있다. Ex. Boolean인 경우 'false' / Integer 혹은 Long인 경우 0 Collection의 경우 모두 비어있는 Collection을 가지고 있다. Void 메소드의 경우 예외를 던지지 않고 아무 일도 발생하지 않는다. Stubbing이란 Mock 객체의 행동을 조작하는 것을 말한다. Mock객체의 when 메소드를 활용하여 Stubbing을 진행해보자. Ex. 리턴값이 있는 when 메소드 활용 1 StudyService public Study createNewStudy(Lon.. Spring Boot/Mockito 2022. 8. 7. [Mockito] Mockito 시작하기 build.gradle 입니다. 스프링 부트로 프로젝트를 생성하게 되면 spring-boot-starter 의존성을 따라서 기본으로 mockito가 들어오게 됩니다. 스프링부트는 버전을 명시해주지 않으면 최신버전으로 가져오기 떄문에 Junit이 기본으로 들어온것처럼 mockito도 4.5.1 버전으로 의존성이 추가 된것을 확인 할 수 있습니다. 만약 스프링부트로 프로젝트를 하지 않을경우 메이븐 레포지토리에서 찾아서 추가해주면 됩니다. https://mvnrepository.com/search?q=mockito Mock 객체 만들기 MemberService public interface MemberService { Optional findById(Long memberId); } 구현체가 없는 인터페이스 입.. Spring Boot/Mockito 2022. 8. 7. [Mockito] Mockito Mock 이란? Mockito에 대해 설명하기 전에 Mock에 대한 개념부터 설명하겠습니다. Mock은 한글로 "모의, 가짜의" 라는 뜻으로 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효율성을 높이기 위해 사용합니다. 위키에 정의 된 Mock은 다음과 같습니다.. 모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 경우 테스트를 수행할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 "흉내"내는 "가짜" 모듈을 작성하여 테스트의 효용성을 높이는 데 사용하는 객체이다. 사용자 인터페이스(UI)나 데이터베이스 테스트 등과 같이 자동화된 테스트를 수행하기 어려운 때 널리 사용된다. - 위키백과, .. Spring Boot/Mockito 2022. 8. 7. [Batch] Execution 데이터 공유 스프링 배치에서는 데이터를 공유할 수 있습니다. BATCH_JOB_EXECUTION Job이 실행되는 동안 시작/종료 시간, job 상태 등을 관리 BATCH_JOB_EXECUTION_CONTEXT Job이 실행되며 공유해야할 데이터를 직렬 화해 저장 BATCH_STEP_EXECUTION Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장 BATCH_STEP_EXECUTION_CONTEXT Step이 실행되며 공유해야할 데이터를 직렬 화해 저장 저번 글에서 적은 내용입니다. 위와같이 Job과 Step 에는 EXECUTION과 EXECUTION_CONTEXT 가 있습니다. 두 개가 데이터를 저장하는 역할을 합니다. 여기서 BATCH_JOB_EXECUTION_CONTEXT와 BATCH_STEP_E.. Spring Boot/Batch 2022. 7. 28. [Batch] 메타데이터, 메타 테이블 이전글에서 간단하게 Spring Batch가 수행되게 구현해보았습니다. JobRepositoy db또는 메모리에 스프링배치가 실행할 수 있도록 배치 메타데이터로 관리하는 클래스입니다. 메타데이터는 나중에 더 자세히 알아보겠습니다. 여기에 이어지는 글입니다. 메타 데이터란, 데이터를 설명하는 데이터라고 보시면 됩니다. 위키피디아보다 나무위키가 더 설명이 잘되어있어 나무위키 링크를 첨부합니다 Spring Batch의 메타 데이터는 다음과 같은 내용들을 담고 있습니다. 이전에 실행한 Job이 어떤 것들이 있는지 최근 실패한 Batch Parameter가 어떤것들이 있고, 성공한 Job은 어떤것들이 있는지 다시 실행한다면 어디서 부터 시작하면 될지 어떤 Job에 어떤 Step들이 있었고, Step들 중 성공한 .. Spring Boot/Batch 2022. 7. 28. [Batch] 스프링 배치 시작하기 배치란? 배치작업은, 데이터를 실시간으로 처리하는게 아니라, 일괄적으로 모아서 처리하는 작업을 의미한다. 가령, 하루동안 쌓인 데이터를 배치작업을 통해 특정 시간에 한꺼번에 처리하는 경우가 이에 해당한다. 은행의 정산작업과 같은 업무에서 이런 일괄처리를 수행하게 되며 사용자에게 빠른 응답이 필요하지 않은 서비스에 적용할 수 있다. 특정 시간이후에는 자원을 거의 소비하지 않는 것이 특징이다. 큰 단위의 작업을 일괄 처리 대부분 처리량이 많고 비 실시간성 처리에 사용 - 대용량 데이터 계산, 정산, 통계, 데이터베이스, 변환 등 컴퓨터 자원을 최대로 활용 - 컴퓨터 자원 사용이 낮은 시간대에 배치를 처리하거나 - 배치만 처리하기 위해 사용자가 사용하지 않는 또 다른 컴퓨터 자원을 사용 사용자 상호 작용으로 .. Spring Boot/Batch 2022. 7. 28. [JUnit5] 마이그레이션 기본적으로 스프링 부트로 프로젝트를 만들면 spring boot-starter-test 에 JUnit5 가 포함되어 있고 junit-vintage-engine은 빠져있습니다. 지금은 공부를 하고 있으니깐 추가해줍니다. // https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine testImplementation group: 'org.junit.vintage', name: 'junit-vintage-engine' 이러면 jupiter가 아닌 그냥 junit @Test 어노테이션이 생깁니다. package me.jisu.javatest; import org.junit.Before; import org.junit.Test; publi.. Spring Boot/JUnit5 2022. 7. 22. 이전 1 2 3 4 5 6 다음