본문 바로가기

개발/Spring

[Spring] MockMvc

MockMvc란

실제 객체와 비슷하지만, 테스트에 필요한 기능만 가지는 가짜 객체를 만들고, 서버에 배포하지 않고 재현할 수 있는 클래스를 의미한다.

 

-> 예를 들어, 구현한 코드를 테스트 해보기 위해서는 서버를 띄우고 Postman과 같은 툴로 확인을 했었지만, MockMvc로 인해, 이러한 과정 없이 바로 테스트를 해볼 수 있다.

 

MockMvc를 검색하면, 대부분의 블로그에서 사용법을 위주로 설명하신다.

이미 이러한 사용법에 대해서는 많이 나와있으니, 내가 궁금했던 것들을 기록하자.


 

TestCode를 생성할 때, JUnit4인지 JUnit5인지 선택하게 된다.

이 둘의 차이는 무엇일까?

 

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

 

 

  • JUnit Platform: JVM에서 동작하는 테스트 프레임워크이다. 테스트를 발견하고 계획을 생성하고 결고를 보고하는 TestEngine 인터페이스를 정의한다.
  • JUnit Jupiter: JUnit5 TestEngine의 실제 구현체이다. JUnit5 기반의 테스트를 실행시키기 위한 TestEngine을 Platform에 제공한다.
  • JUnit Vintage: TestEngine에서 JUnit3및 JUnit4 기반 테스트를 실행하기 위한 기능을 제공한다.

JUnit4가 단일 jar였던 것에 반해, JUnit5는 위 세가지 모듈로 구성되어 있다.

 

+여기서 jar는 무엇이고, 단일 jar는 또 무엇인가??

 

+jar란?

더보기

일종의 자바 프로젝트 압축 파일이다.

ZIP 파일 압축 알고리즘을 기반으로 만들어 져서, 반디집, 알집과 같은 zip프로그램과 호환이 가능하다.

jar파일은 웹 브라우저에서 빠르게 다운로드 할 수 있도록, 자바 애플리케이션을 위한 클래스, 이미지 및 사운드 파일들을 하나의 파일에 압축하여 담고 있는 파일이다.

jar로 묶어서 배포하게 되면, 경로나 파일의 위치에 상관없이 프로그램의 실행이 가능하다.

Application 소스 배포시, path 등의 설정에서 에러점을 제거해 줄 수 있다.

 

정리: 자바 Application을 실행할 때, jar파일을 추출하여 그것을 실행시키는 것으로 이해했다. 경로나 파일의 위치가 상관없이 실행하는 장점과 파일의 무게가 줄어드니 다운 받기도 편하다는 장점이 있다.

 

그럼 위에서 JUnit이 단일 jar라는 뜻은, JUnit하나만 별도로 jar파일로 구성되어, 그것을 사용하는 것이 되겠구나 생각했다.

그것에 반해 JUnit5부터는 jar로 따로 구성되어 있지 않고, 위 세 가지의 모듈로 구성되어 있다.

 

 

 

 

 

파일 규모: ear > war > jar > class

 

 

 

 

 

 

출처: https://hirlawldo.tistory.com/39, https://gptjs409.github.io/java/2019/08/06/war-jar.html, https://newbiecs.tistory.com/122

'개발 > Spring' 카테고리의 다른 글

[JPA] 영속성 컨텍스트  (0) 2021.07.23
JPA란  (0) 2021.07.22
[프로그래머스] Level2_오픈채팅방  (0) 2021.07.08
[Spring] Spring MVC 전체 구조  (0) 2021.06.14
[Spring] 빈 생명주기, 빈 스코프  (0) 2021.05.17