스프링부트와 AWS로 혼자 구현하는 웹 서비스 2 - JUnit
2장 스프링 부트에서 테스트 코드를 작성하자
💜프로젝트 구조
intelliJ 2021.2 버전 기준
intelliJ에서 gralde 기반의 java 프로젝트를 생성하면 기본적으로 다음과 같은 프로젝트 디렉토리 구조가 생성된다.
File -> Project Structure
에서 프로젝트 구조를 확인할 수 있다.
또는 프로젝트 루트 디렉토리에 마우스 우클릭 -> Open Module Settings
또는 [F4]
를 입력하여 프로젝트 구조를 확인할 수도 있다.
main 모듈, <Project>.main
- root directory :
<Project>\src\main
- source folder :
<Project>\src\main\java
test 모듈, <Project>.test
- root directory :
<Project>\src\test
- test source folder :
<Project>\src\test\java
💜Application
Application
클래스는 앞으로 만들 프로젝트의 메인 클래스이다.
스프링부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정한다.
@SpringBootApplication
특히 @SpringBootApplication
위치부터 설정을 읽어나간다.
그러므로 Application
클래스는 항상 프로젝트 최상단에 위치해야한다.
package hyep.study.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // start of application, top of application, auto SpringBoot configuration, Spring Bean reading and creation
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args); // execute internal WAS
}
}
main
메소드에서 실행하는 SpringApplication.run
으로 인해 내장 WAS가 실행된다.
내장 WAS 는 별도로 외부 WAS를 두지 않고 애플리케이션을 실행할 때 내부에서 WAS를 실행하는 것을 이야기한다.
그러면 서버에 톰캣과 같은 WAS를 설치할 필요가 없다.
스프링 부트로 만들어진 Jar(실행가능한 Java 패키징 파일)로 실행하면 된다.
🥕 내장 WAS 를 권장하는 이유 ?
- 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있기 때문이다.
💜Test
테스트하고자 하는 대상 클래스(HelloController
) 명에 마우스 우클릭 -> Go To -> Test
또는 [ctrl+shift+T]
를 입력하여 테스트 클래스(HelloControllerTest
)를 만들 수 있다.
테스트 클래스는 대상 클래스 이름에 Test를 붙인다.
해당 클래스는 설정된 test source folder
에 자동으로 생성되고, test source folder
가 지정되어 있지 않으면, HelloController
클래스와 같은 경로에 생성된다.
테스트 클래스를 이용해 HelloController
클래스의 테스트를 성공했다.
💜Spring Boot Annotations
- @SpringBootApplication
- @RestController
- @GetMapping
- @WebMvcTest
- @AutoWired
💜org.springframework.test.web.servlet.MockMvc
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/servlet/MockMvc.html
💜org.springframework.test.context.junit4.SpringRunner
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/junit4/SpringRunner.html
Reference
- 스프링부트와 AWS로 혼자 구현하는 웹 서비스
- Spring Boot Reference Document
- Spring Boot 2.5.5 API
- Spring Framework 5.3.10 API
- JUnit 4.13 API
- https://ildann.tistory.com/5
- https://4whomtbts.tistory.com/128