신뇽이 되어보자

[Spring] Test 폴더 생성하고 Junit을 사용하여 TestCode 작성하기 본문

Spring

[Spring] Test 폴더 생성하고 Junit을 사용하여 TestCode 작성하기

신뇽이되고싶은미뇽 2024. 4. 13. 13:28
728x90

 
 
초록색부분이 있어야 테스트 코드를 작성하고 실행할 수 있는데
처음에 이 부분이 없었다.
 
처음에는 당황해서 프로젝트를 새로 다시 만들어야하나...?라는 생각을 했다.
 
하지만 방법이 다 있더랍니다..?ㅎㅎ
 
그래서 오늘의 기록이 시작.
 
 
 
 

Test 폴더 만드는 방법

 
1. 최상위 폴더에서 디렉터리 test 생성

 
 

필자는 이미 만들어놨기에 에러가 나는 것이므로 저 빨간 부분은 무시해도 좋다.

 
2. 테스트 폴더를 지정해준다. 최상위 폴더에서 마우스 우클릭 > Open Module Settings
 
폴더 구조 안의 test클릭 > Mark as 의 Tests클릭
 
하면 가장 오른쪽에 초록색으로 Test Source Folders로 test폴더가 지정된 것을 확인할 수 있다.

라이언을 따라가보자~

 
 
 

테스트 코드 작성하는 법

 
1. 테스트를 하고자 하는 Multiplier 클래스이 클래스명 위에서 우클릭하여 Go to - Test 클릭

 
Create New Test 클릭 
 

 
Testing library:  JUnit4 선택 > 테스트하고 싶은 메서드 클릭 후 OK버튼 클릭
 

 
 
내가 테스트할 DAO 코드 

@Repository
public class MybatisMypageDao implements MypageDao {
      //MypageDao 재정의 및 구현
   @Autowired  //의존성 주입을 해주지 않으면, 즉(@Autowired)를 해주지 않으면 NullPointerException에러가 나니 주의!!!!
    private MyPageMapper myPageMapper;

    @Transactional  //Transactional 어노테이션을 정의해주어 트랜잭션 관리를 해준다.
//이 어노테이션을 정의해주지 않으면 변경이 발생할 때 DB에 반영이 안될 수도 있음. 해주는 것이 좋습니다.!!!!!
//이 어노테이션은 변경을 트랜잭션으로 묶어서 커밋하거나 롤백하는 데 사용됩니다!!!
    public User getUserById(Long userId) throws DataAccessException {
        return myPageMapper.getUserById(userId);
    }

    @Transactional
   public int updateNickname(String userId, String newNickname) throws DataAccessException {
        System.out.println("MybatisMypageDao - updateNickname - userId: " + userId + ", newNickname: " + newNickname);
        return myPageMapper.updateUserNickname(userId, newNickname);
    }



}

 
 
 
테스트 코드 
 

@RunWith(SpringJUnit4ClassRunner.class) //Unit 프레임워크에게 사용할 테스트 러너(runner)를 지정하는 데 사용
@ContextConfiguration(locations = "file:src/main/resources/dataAccessContext-mybatis.xml")  
//테스트 실행에 필요한 애플리케이션 컨텍스트를 구성하는 방법을 지정
//이렇게 설정된 테스트 클래스는 스프링 애플리케이션 컨텍스트를 로드하고, dataAccessContext-mybatis.xml 파일에서 정의된 빈들을 테스트에서 사용할 수 있게 됨.

public class MypageTest {

    @Autowired
    private MypageDao mypageDao;
    @Autowired
    private MybatisMypageDao mybatisMypageDao;

    @Test
    public void testUser() throws Exception{

        // 사용자 조회
        User user = mypageDao.getUserById(2L); // 예시: ID가 2인 사용자를 가져오는 메서드

        // 사용자가 null인지 확인
        assertNotNull(user);
        System.out.println("유저 닉네임:"+ user.getId()+user.getUser_id() +user.getNickname());
        // 사용자의 닉네임 변경
        mybatisMypageDao.updateNickname(user.getUser_id(),"ChangeNickname~~~!!");

        User user1 = mypageDao.getUserById(2L); // 콘솔에 출력하려면 새로 객체를 다시 만들어줘야함!!

        // 변경된 닉네임 출력
        System.out.println("변경된 유저닉네임:"+ user1.getNickname());
    }

}

 
 
결과
 
변경 전 USER_TABLE 데이터

 
테스트 성공했다고 알려주는 콘솔창

 
DB에 적용된 결과 화면

 
SQL Developer에서 확인한 데이터 결과

 
적용이 잘 된 것을 확인할 수 있다!
 
 
다음에는 실수하기 좋은 포인트에 대해 기록해보도록 하겠다.
 
 
그럼 끝!

728x90