[Spring] Gradle, JUnit, 테스트 코드
[Gradle] - 자바 기반의 빌드 도구
Gradle의 주요 특징
1. 유연한 빌드 시스템: Gradle은 Groovy 또는 Kotlin DSL을 사용하여 빌드 스크립트를 작성할 수 있어,
코드의 가독성과 유지 보수성을 높인다.
2. 의존성 관리: Gradle은 Maven Central, JCenter 등의 리포지토리에서 라이브러리를 쉽게 가져올 수 있도록 지원한다.
이를 통해 프로젝트의 의존성을 간편하게 관리할 수 있다.
3. 다양한 작업 수행: Gradle은 컴파일, 테스트, 패키징, 배포 등 다양한 작업을 자동화할 수 있으며,
사용자가 원하는 대로 작업을 정의하고 실행할 수 있다.
4. Inceremental Build: Gradle은 변경된 파일만 다시 빌드하여 빌드 시간을 단축시킬 수 있는 기능을 제공한다.
5. 플러그인 생태계: Gradle은 다양한 플러그인을 통해 기능을 확장할 수 있으며, 스프링 부트 프로젝트의 경우
''spring-boot-gradle-plugin''을 사용하여 스프링 부트 애플리케이션의 빌드 및 실행을 간편하게 처리할 수 있다.
[JUnit]
- 개발에서의 버그를 최대한 많이 찾아내기 위해서
테스트 코드를 작성해야 하는데
스프링에서는 테스트 코드를 작성할 수 있는 환경을 제공해 준다.
그 환경을 J-unit이라 한다. 자바프로그래밍 언어용 간이 테스트 프레임 워크.
- 단위 테스트: 개별 클래스나 메서드의 동작을 검증하는 테스트
-어노테이션: JUnit은 다양한 어노테이션(@Test, @Before, @After 등)을 통해
테스트 메서드의 실행 순서를 정의한다.
JUnit 어노테이션
@Test: 해당 메서드가 테스트 메서드임을 나타낸다.
@Autowired: 테스트 클래스에 스프링 빈을 주입한다.
@MockBean: Mockito와 함께 사용하여 테스트할 빈의 Mock 객체를 생성할 수 있다.
@Before / @After: 각각 테스트 실행 전후에 수행할 메서드를 정의한다.
[테스트 작성 예시]
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
public class MyServiceTest {
@Autowired
private MyService myService;
@Before
public void setUp() {
// 테스트 실행 전 수행할 초기화 작업
}
@After
public void tearDown() {
// 테스트 실행 후 수행할 정리 작업
}
@Test
public void testMyServiceMethod() {
// Arrange
// 필요한 데이터 설정
// Act
String result = myService.myMethod();
// Assert
assertEquals("기대하는 결과", result);
}
}
- 스프링 테스트 컨텍스트: @RunWith(SpringJUnit4ClassRunner.class) 어노테이션을 사용하여
스프링 컨텍스트와 JUnit을 통합할 수 있다.
- 의존성 주입: 스프링의 의존성 주입 기능을 테스트에서 활용하여 실제 빈을 테스트할 수 있다.
- @ContextConfiguration: 테스트할 스프링 설정 파일이나 클래스를 지정하는 데 사용된다.
[테스트 코드는 Main이 없다.]
JUnit은 테스트 실행 환경을 따로 가지고 있다.
그래서 Main 메서드를 실행하거나 서버를 따로 실행 시키지 않아도
각각의 메서드 혹은 기능 별로 테스트 코드를 작성해서 시킬 수 있다.
테스트 코드 만들기
경로가 맞지 않아도 동작하지 않거나 하는 것은 아니지만, 본래의 경로와 맞춰 주는 것이 좋다.