04 테스트코드 실습
p44 - src/main/java/spring/basic/repository/UserRepositoryImpl
@Component
@Qualifier("userRepositoryImpl")
public class UserRepositoryImpl implements UserRepository {
private static ConcurrentMap<Long, User> users = new ConcurrentHashMap<>();
@Override
public void save(User user) {
users.put(user.getUserId(), user);
}
@Override
public List<User> getUsers() {
return new ArrayList<>(users.values());
}
@Override
public Optional<User> getUserByUserId(Long userId) {
return users.values().stream().filter(user -> user.getUserId().equals(userId)).findAny();
}
}
p45, 46, 47 - src/test/java/spring/basic/repository/UserRepositoryImplTest
class UserRepositoryImplTest {
private UserRepositoryImpl userRepository;
@BeforeEach
void setUp() {
userRepository = new UserRepositoryImpl();
}
@Test
void save() {
// given: 새로운 User 객체를 생성합니다.
User user = new User(1L, "John Doe", "Gold", LocalDate.now(), LocalDate.now());
// when: 저장소에 사용자를 저장합니다.
userRepository.save(user);
// then: 저장된 사용자가 저장소에서 올바르게 조회되는지 확인합니다.
Optional<User> retrievedUser = userRepository.getUserByUserId(user.getUserId());
assertTrue(retrievedUser.isPresent()); // 사용자가 존재하는지 확인
assertEquals(user.getUserId(), retrievedUser.get().getUserId()); // 사용자 ID가 동일한지 확인
assertEquals(user.getName(), retrievedUser.get().getName()); // 사용자 이름이 동일한지 확인
}
@Test
void getUsers() {
// given: 두 명의 사용자 객체를 생성합니다.
User user1 = new User(1L, "John Doe", "Gold", LocalDate.now(), LocalDate.now());
User user2 = new User(2L, "Jane Doe", "Silver", LocalDate.now(), LocalDate.now());
userRepository.save(user1); // 첫 번째 사용자 저장
userRepository.save(user2); // 두 번째 사용자 저장
// when: 저장된 모든 사용자를 가져옵니다.
List<User> users = userRepository.getUsers();
// then: 사용자 목록이 두 명의 사용자를 포함하는지 확인합니다.
assertEquals(2, users.size()); // 사용자의 수가 2명인지 확인
// 각 사용자가 올바르게 저장되었는지 확인
assertEquals("John Doe", users.get(0).getName());
assertEquals("Jane Doe", users.get(1).getName());
}
@Test
void getUserByUserId() {
// given: 두 명의 사용자 객체를 생성하고 저장합니다.
User user1 = new User(1L, "John Doe", "Gold", LocalDate.now(), LocalDate.now());
User user2 = new User(2L, "Jane Doe", "Silver", LocalDate.now(), LocalDate.now());
userRepository.save(user1);
userRepository.save(user2);
// when: 특정 ID로 사용자 조회
Optional<User> foundUser = userRepository.getUserByUserId(1L);
// then: 사용자가 조회되었는지 확인
assertTrue(foundUser.isPresent()); // 사용자가 존재하는지 확인
assertEquals(1L, foundUser.get().getUserId()); // ID가 1L인지 확인
assertEquals("John Doe", foundUser.get().getName()); // 이름이 "John Doe"인지 확인
// 없는 사용자를 조회했을 때
Optional<User> notFoundUser = userRepository.getUserByUserId(3L);
assertTrue(notFoundUser.isEmpty()); // 없는 사용자는 조회되지 않아야 함
}
}
Last updated