삽질블로그

회원관리 예제 Test코드 작성 본문

자바스프링

회원관리 예제 Test코드 작성

삽질블로그 2022. 9. 25. 14:09

테스트 코드 구성

저번 회원관리 예제에 대한 코드를 테스트 코드로 작성해보았다.

실무에서 실제 코드를 작성하는 시간보다 테스트 코드를 작성하는데 비중을 더 쏟는다는 말이 신기했다.

테스트 코드먼저 작성하고 후에 실제 코드를 작성하는 것을 테스트 주도 개발이라고 한다.

종종 기업에서 테스트 주도 개발 경험관련 유무자라는 글을 본 적이 있는데,

그냥 흘러넘겼다가 이번에 김영한 강사님께서 하시는 말씀을 듣고 테스트 주도 개발에 대해서 알게 되었다.

나중엔 테스트 주도 개발도 간단한 프로젝트로 진행 해봐야겠다는 생각을 했다.

 

package com.example.springStudy.repository;

import com.example.springStudy.domain.User;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.util.Assert;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

class UserRepositoryTest {

    UserRepository repository = new UserRepository();

    @Test
    void storeMember() {
        User user = new User();
        user.setEmail("test123");
        user.setName("김테스트");
        user.setPassword("test");
        repository.StoreMember(user);

        User result = repository.findByEmail("test123").get();
        Assertions.assertEquals(result, user);
    }

    @Test
    void findByEmail() {
        User user = new User();
        user.setEmail("test123");
        user.setName("김테스트");
        user.setPassword("test");
        repository.StoreMember(user);

        User result = repository.findByEmail("test123").get();
        Assertions.assertEquals(result, user);
    }

    @Test
    void findPassword() {
        User user = new User();
        user.setEmail("test");
        user.setName("김테스트");
        user.setPassword("test123");
        repository.StoreMember(user);

        String password = repository.findPassword("test");

        Assertions.assertEquals(password, user.getPassword());
    }

    @Test
    void findAll() {
        User user = new User();
        user.setEmail("test");
        user.setName("김테스트");
        user.setPassword("test123");
        repository.StoreMember(user);

        List<User> userList = repository.findAll();
        Assertions.assertEquals(userList.size(), 1);
    }
}

 

package com.example.springStudy;

import com.example.springStudy.domain.User;
import com.example.springStudy.repository.UserRepository;
import com.example.springStudy.service.UserService;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;
import java.util.Optional;

@SpringBootTest
class SpringStudyApplicationTests {
   private UserRepository userRepository;
   private UserService userService;

   @BeforeEach
   void beforeEach(){
      userRepository = new UserRepository();
      userService = new UserService(userRepository);

   }
   @AfterEach
   void afterEach(){
      userRepository.clear();
   }
   @Test
   void join(){
      User user = new User();
      user.setEmail("test");
      user.setName("test1234");
      user.setPassword("aaaa");
      userService.join(user);

      User result = userService.searchUser("test").get();
      Assertions.assertEquals(result, user);
   }
   @Test
   void 이메일로유저찾기(){
      User user = new User();
      user.setEmail("test");
      user.setName("test1234");
      user.setPassword("aaaa");
      userService.join(user);

      User result = userService.searchUser("test").get();
   }
   @Test
   void 비밀번호찾기(){
      User user = new User();
      user.setEmail("test");
      user.setName("test1234");
      user.setPassword("aaaa");
      userService.join(user);

      String result = userService.findPassword("test");
      Assertions.assertEquals(result, "aaaa");
   }
   @Test
   void 전체회원조회(){
      User user = new User();
      user.setEmail("test");
      user.setName("test1234");
      user.setPassword("aaaa");
      userService.join(user);

      User user2 = new User();
      user2.setEmail("test2");
      user2.setName("test12345");
      user2.setPassword("aaaab");
      userService.join(user2);

      List<User> result = userService.findAllUser();
      Assertions.assertEquals(result.size(), 2);
   }


}

각각 repository, service 코드에 대한 테스트 코드이다.

 

참고자료 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

Comments