Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 클라우드기초교육
- 만화철학
- sts3
- sm회사
- docker
- si회사
- 다크모드
- 3분철학
- nhn cloud
- 코딩 특수문자
- 쿠버네티스기초
- 슬래시24
- Kubernetes
- 미국채권
- 성장마인드셋
- 일상의행복
- 티스토리 야간모드
- m1 sts3 설치
- 교양철학
- 쿠버네티스
- 다국어 입력전환
- Rectangle
- Mac m1
- nhn_cloud_console
- 클라우드입문자
- spring mvc project
- 거래소 운영시간
- 도커
- 만화로보는3분철학
- 원씽
Archives
- Today
- Total
Good Morning
Java에서 데이터베이스 CRUD 작업 테스트하기: 사용자 정보 업데이트 예제 본문
Java에서 데이터베이스 CRUD(Create, Read, Update, Delete) 작업, 특히 Update 작업에 대한 단위 테스트를 작성하는 방법에 대해 알아보겠습니다.
1. 배경
데이터베이스 작업을 수행하는 코드를 테스트하는 것은 애플리케이션의 안정성을 보장하는 데 매우 중요합니다. 여기서는 사용자 정보를 업데이트하는 기능을 예로 들어 설명하겠습니다.
2. 코드 구조
먼저, 다음과 같은 메서드가 있다고 가정해봅시다:
public int updateUser(User user) throws Exception {
Connection conn = ds.getConnection();
String sql = "UPDATE user_info SET pwd=?, name=?, email=?, birth=?, sns=? WHERE id=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 파라미터 설정
return pstmt.executeUpdate();
}
이 메서드는 User 객체를 받아 데이터베이스의 user_info 테이블을 업데이트합니다.
3. 테스트 코드 작성
이제 이 updateUser 메서드를 테스트하는 코드를 작성해 보겠습니다:
@Test
public void updateUserTest() throws Exception {
// 1. 테스트 준비: 기존 데이터 삭제 및 새 사용자 추가
deleteAll();
User user = new User("testuser", "password", "Test User", "test@example.com", new Date(), "twitter", new Date());
insertUser(user);
// 2. 업데이트할 새로운 정보 생성
User updatedUser = new User("testuser", "newpassword", "Updated User", "updated@example.com", new Date(), "facebook", new Date());
// 3. updateUser 메소드 호출
int rowCnt = updateUser(updatedUser);
// 4. 업데이트 결과 확인
assertTrue(rowCnt == 1);
// 5. 업데이트된 사용자 정보 조회
User retrievedUser = selectUser("testuser");
// 6. 조회된 정보와 업데이트한 정보 비교
assertNotNull(retrievedUser);
assertEquals(updatedUser.getPwd(), retrievedUser.getPwd());
assertEquals(updatedUser.getName(), retrievedUser.getName());
assertEquals(updatedUser.getEmail(), retrievedUser.getEmail());
assertEquals(updatedUser.getSns(), retrievedUser.getSns());
// 7. ID는 변경되지 않았는지 확인
assertEquals(user.getId(), retrievedUser.getId());
}
4. 테스트 코드 설명
- 테스트 준비: 기존 데이터를 모두 삭제하고 새로운 테스트 사용자를 추가합니다.
- 업데이트 정보 생성: 변경할 사용자 정보를 새로운 User 객체로 생성합니다.
- updateUser 메소드 호출: 실제 업데이트 작업을 수행합니다.
- 업데이트 결과 확인: 반환된 rowCnt가 1인지 확인합니다. 이는 정확히 한 행이 업데이트되었음을 의미합니다.
- 업데이트된 정보 조회: 데이터베이스에서 업데이트된 사용자 정보를 다시 조회합니다.
- 정보 비교: 업데이트된 정보가 예상대로 변경되었는지 각 필드를 비교합니다.
- ID 확인: 사용자 ID는 변경되지 않았는지 확인합니다.
5. assertTrue(rowCnt == 1)의 의미
이 assertion은 매우 중요합니다. updateUser 메소드가 반환하는 rowCnt는 영향을 받은 행의 수를 나타냅니다.
- rowCnt == 1: 정확히 한 행이 업데이트되었음을 의미합니다. 이는 우리가 원하는 결과입니다.
- rowCnt == 0: 업데이트할 사용자를 찾지 못했다는 의미일 수 있습니다.
- rowCnt > 1: 여러 행이 업데이트되었다는 의미로, 이는 예상치 못한 결과입니다.
따라서 rowCnt == 1을 확인함으로써, 우리는 updateUser 메서드가 정확히 한 명의 사용자 정보만을 업데이트했다는 것을 검증할 수 있습니다.
'Back-End > Java' 카테고리의 다른 글
Java 내부 클래스 사용법과 최적화 방법 (2) | 2024.09.27 |
---|---|
System.out.printf() 이해하기 (0) | 2024.08.27 |
윤년의 이해와 Java에서의 구현 (1) | 2024.08.26 |
Java의 정적(Static) 메서드 이해하기 (0) | 2024.07.27 |
[백준 코딩테스트 문제] 3085번 사탕 게임.Java (0) | 2024.07.19 |