테스트 시나리오
애플리케이션의 테스트 되어야 할 기능이나 특징을 한 문장으로 기술한 것
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 |