민스씨의 일취일장

LogT | Java Spring의 TDD에 대해 알게된 모든 내용과 고민들 본문

카테고리 없음

LogT | Java Spring의 TDD에 대해 알게된 모든 내용과 고민들

읻민스 2023. 1. 13. 22:57
반응형

Java Spring의 TDD에 대해서 알게 된 모든 내용과 고민들을 시간순으로 기록하는 페이지이다.


2023년 1월 13일

TDD

  • TDD란 Test Driven Development의 약자이다.
  • 작은 단위로 각각의 기능에 대한 테스트 코드를 작성해 가며 개발하는 방식이다. 이를 통해 실제 코드를 돌려보는 테스트를 줄일 수 있고 발생한 문제를 빠르게 찾는데 도움을 줄 수 있다.

DB에 TDD 적용하기

  • 클래스 전체에서 사용하는 인스턴스 객체를 테스트 Annotaion (@Test)가 붙은 메서드들이 공유하지 않는다.
  • 테스트 메서드들은 서로 독립적이어야 하고 몇번을 수행해도 성공해야 한다.

Delete All

테스트를 매번 시행 함에 있어서 기존의 데이터가 테스트에 영향을 주지 않도록 하기 위해 데이터를 모두 지우고 시작한다.

    private void deleteAll() throws Exception{
        Connection conn = ds.getConnection();

        String sql = "delete from [tableName]";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.executeUpdate();
    }

Insert Test

@Autowired
DataSource ds;

@Test
public void insertTest() throws Exception{
    User user = new User("id", "pwd", "name", "email@mail.com");
    deleteAll();

    int rowCnt = insertUser(user);
    assertTrue(rowCnt==1);
}

public int insertUser(User user) throws Exception{
    Connection conn = ds.getConnection();

    String sql = "insert into user_info values (?,?,?,?);";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, user.getId());
    pstmt.setString(2, user.getPwd());
    pstmt.setString(3, user.getName());
    pstmt.setString(4,user.getEmail());

    int rowCnt = pstmt.executeUpdate();

    return rowCnt;
}

assertTrue는 값이 True일 때 True를 반환한다. Test에서는 마지막에 다양한 asset 메서드를 사용해서 True인지를 확인한다. 메서드에 들어가는 조건문을 잘 작성해기 위해선 본래의 메서드가 성공적인 작업에 어떤 값을 반환해야 하는지 정확히 알고 있어야 한다.

728x90
반응형