테스트 시나리오

애플리케이션의 테스트 되어야 할 기능이나 특징을 한 문장으로 기술한 것

1. Calculator 인스턴스 생성이 잘 되는지 테스트

Calculator calc = new Calculator();

if(calc != null) {
 System.out.println("인스턴스 생성 성공");
 } else {
  System.out.println("인스턴스 생성 실패");
  }

 

2. sumTwoNumber 메소드가 정상 기능하는지 테스트

2-1. 4와 5를 전달하면 합계가 9가 되는지 확인

int result1 = calc.sumTwoNumber(4, 5);
		
		if(result1 == 9) {
			System.out.println("4와 5를 더하면 합계가 9인지 확인");
		} else {
			System.out.println("4와 5를 더하면 합계가 9인지 확인 실패");
		}

2-2. 6과 7을 전달하면 합계가 13이 되는지 확인

int result2 = calc.sumTwoNumber(6, 7);
		
		if(result2 == 13) {
			System.out.println("6와 7를 더하면 합계가 13인지 확인");
		} else {
			System.out.println("6와 7를 더하면 합계가 13인지 확인 실패");
		}

 

3. 위의 테스트 결과가 모두 통과되면 해당 클래스의 메소드는 신뢰성있는 메소드임을 확인

if(result1 == 9 && result2 == 13) {
			System.out.println("테스트 성공! 나는야 천재 개발자~~");
		} else {
			System.out.println("테스트 실패! 메소드를 다시 확인해주세요...");
		}

 

 

프레임워크를 이용하여 테스트 코드를 작성

테스트 클래스명으로 테스트할 클래스명에 Tests를 붙이는 게 보편적이다.

단위 테스트(unit test) 

한 가지 기능(함수)마다 일을 잘 수행하는지 확인하며 특정 모듈이 의도된대로 정확히 작동하는지 검증하는 절치이다. 연관 컴포넌트가 개발되지 않더라도 기능별 개발이 완료된 것을 증명할 수 있다. 

자바에서는 junit을 활용한다.

 

JUnit 추가 방법 : project의 propertise - java - build path - add library - JUnit 5 추가

 

JUnit 5 annotiation

@BeforeAll : 모든 @Test 메소드 실행 전에 한번만 수행한다.

@BeforeEach : @Test 메소드 실행 전에 매번 수행한다.

@BeforeEach
	public void setup() {
		System.out.println("calculator 인스턴스 생성");
		calc = new Calculator();

@Test : 테스트하고 싶은 단위별로 붙여서 메소드를 만든다.

import 할 때 더 최신버전 코드인 jupiter 패키지를 선택한다.

테스트 메소드 같은 경우 배포용이 아니기 때문에 알아보기 좋게 한글을 섞어서 적는 경우가 종종 있다.

@Test
	public void testSumTwoNumber_4와_5를_전달하면_합계가_9가_계산되는지_확인() {
		System.out.println("2-1 테스트 동작");
		int result = calc.sumTwoNumber(4, 5);
		
		assertEquals(9, result);
	}

1) 테스트 메소드를 실행하여 성공 확인

2) 틀렸을 경우 확인

 

	@Test
	@Disabled	// 테스트 하고 싶지 않은 경우 무시하도록 작성하는 annotiaion
	public void testSumTwoNumber_6과_7을_전달하면_합계가_13이_되는지_확인() {
		System.out.println("2-2 테스트 동작");
		int result = calc.sumTwoNumber(6, 7);
		
		assertEquals(13, result, 1); // 세번째 인자는 오차범위. 1까지는 오차범위를 허용하겠다.
	}

 

테스트 코드를 확인하는 assert 메소드들

assertArrayEquals(a,b) : 배열 a와 b가 일치함을 확인
assertEquals(a,b) : 객체 a와 b의 값이 일치함을 확인
assertSame(a,b) : 객체 a와 b가 같은 객체임을 확인
assertTrue(a) : a가 참인지 확인
assertNotNull(a) : a 객체가 null이 아님을 확인 

 

DAOTests

public class OrderDAOTests {
	
    //orderDAO객체를 필드에 선언해야 한다.
	private OrderDAO orderDAO;
	private Connection conn;
	private OrderDTO order;
	
   
	@BeforeEach
	public void setup() {
		orderDAO = new OrderDAO();  // test를 위한 객체는 test코드를 준비할 수 있는 별도의 setup메소드를 만들어서 처리한다. 
		conn = getConnection();  //select 카테고리는 db와의 연결, setup에선 Connection객체도 미리 만들어야 한다.
		
		order = new OrderDTO();
		order.setDate("23/01/25");
		order.setTime("11:35:20");
		order.setTotalOrderPrice(30000);
	}
	
	@Test
	public void testSelectAllCategory() {
		List<CategoryDTO> categoryList = orderDAO.selectAllCategory(conn); //생성 위해 conn전달
		
		assertNotNull(categoryList);  //null인지 확인
		for(CategoryDTO category : categoryList) {  //구체적인 정보는 출력
			System.out.println(category);
		}
	}
	
	@Test
	public void testInsertOrder() {
		int result = orderDAO.insertOrder(conn, order);
        /* orderDTO는 사용자가 입력한 값에 따라 수행되기 때문에 여기서 생성되지 않으므로 
        가데이터, order에 대한 객체를 하나 만들어서 사용한다. */
		
		assertEquals(1, result);
	}

}

 

 

 

 

'LECTURE > JDBC & Mybatis' 카테고리의 다른 글

Mybatis Template  (0) 2023.01.26
Framework & My batis  (0) 2023.01.26
JDBC 1  (0) 2023.01.25

+ Recent posts