SpringBootDeveloperApplication
@SpringBootApplication
public class SpringBootDeveloperApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDeveloperApplication.class,args);
}
}
이 클래스는 자바의 main 메서드와 같은 역할을 한다.
@SpringBootApplication을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다.
TestController
package me.kimyoungtaek.springboot;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "Hello, world!";
}
}
@GetMapping 부분은 /test GET 요청이 오면 test() 메서드를 실행하라는 의미이다.
스프링부트 3 구조

-프레젠테이션 계층
HTTP 요청을 받고 비지니스 계층으로 전송하는 역할.
컨트롤러가 프레젠테이션 게층의 역할을 하며 TestController 클래스와 같은 것들을 일컫는다. 컨트롤러는 스프링 부트 내에 여러 개가 존재할 수 있다.
-비지니스 계층
모든 비지니스 로직(서비스를 만들기 위한 로직)을 처리한다. 웹 사이트에서 벌어지는 모든 작업을 구현한다.
-퍼시스턴트 계층
모든 데이터베이스 관련 로직을 처리한다. 이 과정에서 데이터베이스에 접근하는 DAO 객체를 사용할 수도 있는데 DAO는 데이터베이스 계층과 상호작용하기 위한 객체이다.
JUnit이란
자바 언어를 위한 단위 테스트 프레임워크이다.
여기서 단위 테스트란 작성한 코드가 의도대로 작동하는지 작은 단위로 검증하는 것을 의미한다.
테스트는 애너테이션에 따라 실행 순서가 정해진다.
import org.junit.jupiter.api.*;
public class JUnitCycleTest {
@BeforeAll
static void beforeAll(){
System.out.println("@BeforeAll");
}
@BeforeEach
public void beforeEach(){
System.out.println("@BeforeEach");
}
@Test
public void test1(){
System.out.println("test1");
}
@Test
public void test2(){
System.out.println("test2");
}
@Test
public void test3(){
System.out.println("test3");
}
@AfterAll
static void afterAll(){
System.out.println("@AfterAll");
}
@AfterEach
public void afterEach(){
System.out.println("@AfterEach");
}
}
@BeforeAll 애너테이션
- 전체 테스트를 시작하기 전에 처음으로 한 번만 실행한다. 딱 한번 호출되어야 하기 때문에 static으로 선언해야한다.
@BeforeEach 애너테이션
- 테스트 케이스를 시작하기 전에 매번 실행한다. 계속 호출해야하기 때문에 static으로 선언하지 않는다.
@AfterAll 애너테이션
- 전체 테스트를 마치고 종료 전에 한 번만 실행한다. 마찬가지로 static으로 선언한다.
@AfterEach 애너테이션
- 각 테스트 케이스를 종료하기 전 매번 실행한다. 마찬가지로 static으로 선언하지 않는다.
출력
@BeforeAll
@BeforeEach
test1
@AfterEach
@BeforeEach
test2
@AfterEach
@BeforeEach
test3
@AfterEach
@AfterAll
AssertJ라는 라이브러리가 있는데 이 라이브러리는 JUnit과 함께 사용해서 검증문의 가독성을 높여주는 역할을 한다.
예를 들어
Assertions.assertEquals(a + b, sum);
이 코드 보다는
asserThat(a + b).isEqualTo(sum);
이 코드가 가독성이 좋다. 이 코드가 AssetJ를 적용한 코드이다.
AssertJ에는 isEqualTo(), isNotEqualTo() 외에도 많은 메소드를 제공한다. 목적에 따라 사용하면 된다.
참고자료
"스프링 부트 3 백엔드 개발자 되기[신선영]"
'SpringBoot' 카테고리의 다른 글
| 스프링 시큐리티 (0) | 2023.08.10 |
|---|---|
| 타임리프 (0) | 2023.07.19 |
| 스프링부트 3 지식 (0) | 2023.07.13 |