분류 전체보기
-
이번 포스트에서는 Spring @MVC의 Controller를 테스트하는 방법에 대해서 알아보자. MockMvc 설정 MockMvc?Controller를 만들고 잘 동작하는지 확인하기 위해서 매번 스프링 애플리케이션을 실행하고 브라우저를 통해서 동작을 확인하는데는 매우 손이 많이 간다. 이 상황에서 파라미터의 전달, attribute, 화면 이동 등을 검증하는 일은 쉬운 일이 아니다. 또한 웹이 제대로 동작하는지 확인하기 위해서는 브라우저나 WAS처럼 우리가 프로그래밍하지 않은 요소가 개입된다. 따라서 Controller의 단위 테스트를 위해서는 MockMvc이라는 객체가 사용된다. MockMvc는 앞서 살펴봤던 @Mock 처럼 가짜로 테스트를 위해 브라우저나 WAS의 동작을 똑같이 처리해줄 수 있는 ..
[spring test] 4. @Controller Test 1이번 포스트에서는 Spring @MVC의 Controller를 테스트하는 방법에 대해서 알아보자. MockMvc 설정 MockMvc?Controller를 만들고 잘 동작하는지 확인하기 위해서 매번 스프링 애플리케이션을 실행하고 브라우저를 통해서 동작을 확인하는데는 매우 손이 많이 간다. 이 상황에서 파라미터의 전달, attribute, 화면 이동 등을 검증하는 일은 쉬운 일이 아니다. 또한 웹이 제대로 동작하는지 확인하기 위해서는 브라우저나 WAS처럼 우리가 프로그래밍하지 않은 요소가 개입된다. 따라서 Controller의 단위 테스트를 위해서는 MockMvc이라는 객체가 사용된다. MockMvc는 앞서 살펴봤던 @Mock 처럼 가짜로 테스트를 위해 브라우저나 WAS의 동작을 똑같이 처리해줄 수 있는 ..
2023.11.27 -
이번에는 service 영역에 대한 테스트를 처리해보자. @Service Layer Test @Service Layer@Service Layer는 통상 @Repository에 의존한다. 즉 @Repository가 없으면 컴파일조차 할 수가 없다.@Service@RequiredArgsConstructorpublic class BoardService { private final BoardRepository repo; public Board write(Board board) { return repo.save(board); } public Optional select(long boardNo) { return repo.findById(boardNo); }} 하..
[spring test] 3. @Service Layer test이번에는 service 영역에 대한 테스트를 처리해보자. @Service Layer Test @Service Layer@Service Layer는 통상 @Repository에 의존한다. 즉 @Repository가 없으면 컴파일조차 할 수가 없다.@Service@RequiredArgsConstructorpublic class BoardService { private final BoardRepository repo; public Board write(Board board) { return repo.save(board); } public Optional select(long boardNo) { return repo.findById(boardNo); }} 하..
2023.11.27 -
이번 포스트에서는 Spring Data Jpa에 대한 테스트를 위한 @DataJpaTest 사용법에 대해 알아보자. @DataJpaTest 애너테이션 분석@DataJpaTest는 Spring Data Jpa 테스트를 위한 slice test 애너테이션이다. @DataJpaTest는 database 및 jpa와 관련된 다양한 자동 설정을 로딩한다.@Target(ElementType.TYPE)@BootstrapWith(DataJpaTestContextBootstrapper.class)@ExtendWith(SpringExtension.class)@OverrideAutoConfiguration(enabled = false)@TypeExcludeFilters(DataJpaTypeExcludeFilter.cl..
[spring test] 2. Spring Data Jpa Test이번 포스트에서는 Spring Data Jpa에 대한 테스트를 위한 @DataJpaTest 사용법에 대해 알아보자. @DataJpaTest 애너테이션 분석@DataJpaTest는 Spring Data Jpa 테스트를 위한 slice test 애너테이션이다. @DataJpaTest는 database 및 jpa와 관련된 다양한 자동 설정을 로딩한다.@Target(ElementType.TYPE)@BootstrapWith(DataJpaTestContextBootstrapper.class)@ExtendWith(SpringExtension.class)@OverrideAutoConfiguration(enabled = false)@TypeExcludeFilters(DataJpaTypeExcludeFilter.cl..
2023.11.27 -
텐션 UP!!! 싸피 10기 1학기 종강!! 뜻깊은 숫자 10을 장식해준 친구들 한 학기동안 잘 따라와줘서 고마워요~ 한쪽으로 쫙 쏟아지는 느낌 하며, 민우의 정말 찍기 싫은 표정 하며 정말 산책을 갔을것 같지는 않은 3인방 하며 내 다리는 너무 오므린것 같고.. 다시 찍어야 하나 고민함 ㅋ 모두들 바라는 성공을 잘 이루길!!
SSAFY 10기 1학기 종강텐션 UP!!! 싸피 10기 1학기 종강!! 뜻깊은 숫자 10을 장식해준 친구들 한 학기동안 잘 따라와줘서 고마워요~ 한쪽으로 쫙 쏟아지는 느낌 하며, 민우의 정말 찍기 싫은 표정 하며 정말 산책을 갔을것 같지는 않은 3인방 하며 내 다리는 너무 오므린것 같고.. 다시 찍어야 하나 고민함 ㅋ 모두들 바라는 성공을 잘 이루길!!
2023.11.25 -
최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다.이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동먼저 spring legacy project에서의 설정 방법을 살펴보자.의존성 설정먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter jun..
[spring test] 1. spring과 junit최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다.이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동먼저 spring legacy project에서의 설정 방법을 살펴보자.의존성 설정먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter jun..
2023.11.23 -
가짜 객체를 이용한 테스팅프로젝트를 진행하다 보면 진짜 객체를 사용하지 못하거나 사용하지 말아야 할 경우가 왕왕 발생한다.Service가 Repository를 호출하는 구조의 애플리케이션에서 Service를 테스트한다고 생각해보자.만약 Service는 만들어졌는데 Repository는 아직 개발 중인 상황이라면 Repository가 개발이 완료될 때까지 Service에 대한 테스트를 미뤄야 할까? 또는 Service에서 Repository를 호출하는 과정에서 오류가 발생했다면 누구의 문제일까? 이처럼 Service의 동작이 Repository에 영향을 받는 게 맞을까? 이런 경우 Repository는 차라리 없다고 생각하고 가짜를 사용하는것이 유리하다.JUnit은 이런 상황에서 Mockito framew..
[junit] jupiter 4. 가짜 객체를 활용한 테스트가짜 객체를 이용한 테스팅프로젝트를 진행하다 보면 진짜 객체를 사용하지 못하거나 사용하지 말아야 할 경우가 왕왕 발생한다.Service가 Repository를 호출하는 구조의 애플리케이션에서 Service를 테스트한다고 생각해보자.만약 Service는 만들어졌는데 Repository는 아직 개발 중인 상황이라면 Repository가 개발이 완료될 때까지 Service에 대한 테스트를 미뤄야 할까? 또는 Service에서 Repository를 호출하는 과정에서 오류가 발생했다면 누구의 문제일까? 이처럼 Service의 동작이 Repository에 영향을 받는 게 맞을까? 이런 경우 Repository는 차라리 없다고 생각하고 가짜를 사용하는것이 유리하다.JUnit은 이런 상황에서 Mockito framew..
2023.11.23 -
이제 단정문까지 학습했으므로 쓸만한 테스트를 만들어보자. 이번 포스트에서는 given-when-then 패턴을 이용한 간단한 단위 테스트를 실행해 본다. given-when-then 패턴 흔히 사용되는 단위테스트 패턴으로 행동 주도 개발(Behavior Driven Development: BDD)이 있는데 여기서는 테스트 코드 작성 단계를 given - when - then 패턴으로 작성하기를 권장한다. given: 테스트를 위해 필요한 상황 준비(이런 상황, 객체, 데이터가 주어졌을 때) when: 테스트하는 메서드 실행(어떤 메서드를 실행했다면) then: 테스트 결과 검증(어떠한 결과가 나와야 한다.) JUnit은 애초에 BDD를 위해 만들어진 녀석은 아니기 때문에 이 패턴이 강제되는 내용은 아니다..
[junit] jupiter 3. 단위테스트 작성 기법이제 단정문까지 학습했으므로 쓸만한 테스트를 만들어보자. 이번 포스트에서는 given-when-then 패턴을 이용한 간단한 단위 테스트를 실행해 본다. given-when-then 패턴 흔히 사용되는 단위테스트 패턴으로 행동 주도 개발(Behavior Driven Development: BDD)이 있는데 여기서는 테스트 코드 작성 단계를 given - when - then 패턴으로 작성하기를 권장한다. given: 테스트를 위해 필요한 상황 준비(이런 상황, 객체, 데이터가 주어졌을 때) when: 테스트하는 메서드 실행(어떤 메서드를 실행했다면) then: 테스트 결과 검증(어떠한 결과가 나와야 한다.) JUnit은 애초에 BDD를 위해 만들어진 녀석은 아니기 때문에 이 패턴이 강제되는 내용은 아니다..
2023.11.23 -
단위테스트의 목적이 "동작 결과가 내가 예상하는 값과 동일한가?"를 테스트하는 것이기 때문에 assertion 즉 단정문을 통한 결과 검증은 필수적인 항목이다. junit 5에서는 org.junit.jupiter.api.Assertions 클래스에 다양한 assertion 메서드들을 static 하게 준비해 두었다.다음 클래스의 메서드가 잘 동작하는지 테스트해보자.class Calculator { public int add(int a, int b) { return a + b; } public int divide(int a, int b) { return a / b; }} 일반적인 assertion standard assertion대부분의 assertion ..
[junit] jupiter 2. assertion단위테스트의 목적이 "동작 결과가 내가 예상하는 값과 동일한가?"를 테스트하는 것이기 때문에 assertion 즉 단정문을 통한 결과 검증은 필수적인 항목이다. junit 5에서는 org.junit.jupiter.api.Assertions 클래스에 다양한 assertion 메서드들을 static 하게 준비해 두었다.다음 클래스의 메서드가 잘 동작하는지 테스트해보자.class Calculator { public int add(int a, int b) { return a + b; } public int divide(int a, int b) { return a / b; }} 일반적인 assertion standard assertion대부분의 assertion ..
2023.11.23