[Spring] JDBC - JUnit

Gabriela·2023년 10월 10일
0

Spring

목록 보기
8/8

JDBC


구현 예제


👉JDBC 구현 예제 전체보기(깃허브 클릭)


JUnit


JUnit 프로젝트 생성

  • JUnit 4버전으로 진행
  • JUnit Jupiter : 5버전
    예시)

디펜던시 추가

  • Maven Repository에서 Spring Test용 디펜던시를 복사한다.

  • (5.3.3 버전 사용)

  • pom.xml에 디펜던시를 추가한 후 version은 변수처리한다. (Spring과 같은 버전으로)

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${org.springframework-version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>

JUnit 처리 방법


  • spring-test dependency를 추가한다.
  • @RunWith를 추가한다.
  • @ContextConfiguration을 추가한다.

@RunWith

  • 클래스 레벨 annotation
  • junit 버전지정한다.
    예)
// JUnit4를 이용한다.
@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration

  • 클래스 레벨 annotation
  • 객체 생성 방법을 알려준다.

객체 생성 방법에 따른 경로 설정

객체(Bean)를 생성한 방법에 따라서 아래 3가지 방식 중 선택한다.
  • <bean> 태그 :
    예)
@ContextConfiguration(locations="file:src/main/webapp/WEB-INF/spring/root-context.xml")
  • @Bean :
    예)
@ContextConfiguration(classes=AppConfig.class)
  • @Component :
    예)
@ContextConfiguration(locations="file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml")
  • location 경로를 잡을 땐 file:로 경로 지정을 해줘야 한다.

@FixMethodOrder

  • JUnit 4.11 버전부터 생성된 annotation
  • 클래스 레벨 annotation
  • 테스트 메소드의 실행순서를 설정해서 제어할 수 있다.

@Test

  • 메소드 레벨 annotation
  • 테스트를 수행하는 annotation

assert로 시작하는 메소드

  • JUnit 테스트 전용 메소드

JUnit 테스트 생성

  • JUnit Test 생성 위치 : src/test/java
  • JUnit Test Case 생성 방법 : New - JUnit Test Case

Junit 테스트 예제

// JUnit4를 이용한다.
@RunWith(SpringJUnit4ClassRunner.class)

// ContactDao Bean 생성 방법을 알려준다.
@ContextConfiguration(locations="file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml")

// 테스트 메소드의 이름 오름차순(알파벳순)으로 테스트를 수행한다.
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ContactUnitTest {
 
  @Autowired  // Spring Container에서 ContactDao 객체(Bean)을 가져온다.
  private ContactDao contactDao;

  @Test  // 테스트를 수행한다.
  public void test01_삽입테스트() {
    ContactDto contactDto = new ContactDto(0, "이름", "연락처", "이메일", "주소", "");
    int insertResult = contactDao.insert(contactDto);
    assertEquals(1, insertResult);  // insertResult가 1이면 테스트 성공이다.    assertEquals(기대한 값, 실제로 나온 값) 이 같으면 test 성공
  }
 
  @Test  // 테스트를 수행한다.
  public void test02_조회테스트() {
    int contact_no = 1;  // 연락처 번호를 시퀀스로 만들기 때문에 1부터 시작
    ContactDto contactDto = contactDao.selectContactByNo(contact_no);
    assertNotNull(contactDto); // contactDto가 not null이면 테스트 성공이다.
  }
 
  @Test  // 테스트를 수행한다
  public void test03_삭제테스트() {
    int contact_no = 1;  // 삭제 결과는 1 아니면 0
    int deleteResult = contactDao.delete(contact_no);
    assertEquals(1, deleteResult);  // deleteResult가 1이면 테스트 성공이다.
    // assertNull(contactDao.selectContactByNO(contact_no)); select 결과가 null이면 테스트 성공이다.  // 대체 가능 코드
  }
}

Junit 테스트 실행

  • 삽입 테스트가 들어갔기 때문에 테스트는 한번만 한다.
  • 테스트를 여러번 하고싶다면 DB에서 초기화를 진행한 후에 한다.
  • Run As - 3 JUnit Test
  • 테스트 성공 확인
  • 테스트 성공 유무는 JUnit 창에서 확인 가능하다.

👉Spring JUnit 테스트 활용 예제(깃허브 클릭)



profile
개발이 세상에서 제일 재밌어요

0개의 댓글