Spring에서 JUnit5를 사용해보자.
먼저 maven에 아래와 같이 dependency를 추가한다.
Properties에는 아래와 같이 3개의 version정보를 설정하고,
<properties>
<junit.jupiter.version>5.8.1</junit.jupiter.version>
<junit.platform.version>1.8.1</junit.platform.version>
<mockito.version>4.6.1</mockito.version>
</properties>
<dependencies>에 아래와 같이 추가한다.
<dependencies>
<!-- JUNIT TEST -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
이제 Java Code에 다음과 같이 추가한다.
@ExtendWith(MockitoExtension.class)
public class BatchSyncServiceImplTest{
}
DAO에서는 Database를 Connection 해서 데이터를 조회한 후 Return해주어야 한다.
하지만 테스트세서 DB를 조회하거나 변경하게되면 문제가 되므로, 해당 Method를 호출 시 가상으로 만들어진 데이터를 Return 해주도록 하자. @BeforeEach를 적용해야, 테스트전 데이터를 세팅할 수 있다.
@BeforeEach
void init() {
listDBConVO = new ArrayList<DBConnectionVO>();
DBConnectionVO dataVO1 = new DBConnectionVO();
dataVO1.setDbUrl("testurl");
dataVO1.setConId("con id test");
listDBConVO.add(dataVO1);
dataVO = new DBConnectionVO();
dataVO.setConNumber(1);
}
when은 해당하는 method를 호출 했을때 DbConnetionDAO.selectDBConnection(dataVO) 일경우 listDBConVO를 return하도록 하는 예제이다.
@Tag("Test")
@Test
@DisplayName("Mockito selectDBTest Test")
void selectDBTest() {
try {
when(DbConnetionDAO.selectDBConnection(dataVO)).thenReturn(listDBConVO);
listDBConVO = gameAccontBatchDAO.selectAccountDBConnection(dataVO);
for(DBConnectionVO dbConVO : listDBConVO) {
System.out.println("Con URL = "+ dbConVO.getDbUrl());
System.out.println("Con ID = "+ dbConVO.getConId());
Assertions.assertEquals( "testurl" , dbConVO.getDbUrl()); // 가져온 데이터 검증
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("====================================");
}
이렇게 할 경우, 해당하는 데이터르 정상적으로 표현되는것을 알 수 있다.
값을 달리하여 테스트하게되면, 결과는 아래와같이 Fail뜨게 된다.
테스트를 하기위한 Annotation은 아래와 같다.
참고 : https://howtodoinjava.com/junit-5-tutorial/
이제 TDD(Test-Driven Development)를 즐겨보자.
'Java' 카테고리의 다른 글
[참고] Ubuntu JDK(JAVA Development Kit) 17 설치 및 삭제 !! (52) | 2023.11.15 |
---|---|
[Java] Java vs Javascript (1) | 2022.10.04 |
[Java] 프로젝트 기획 (필요한 기술 정리하기) 2강 (0) | 2022.08.24 |
[Java] 프로젝트 기획 (1강) (0) | 2022.08.24 |
[Eclipse] 선택한 글 색상 변경 (1) | 2022.08.17 |
Eclipse Git commit & Push 대상 색상 변경( Uncommitted Change Color) (0) | 2022.07.24 |
Spring vs Spring Boot (0) | 2022.07.11 |
댓글