Junit 사용하기
Junit 이란?
Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다.
단위테스트(유닛 테스트) 란?
- 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다.
- 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.
-이를 통해 언제라도 코드 변경으로 인해 문제가 발생 할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다.
- 이상적으로 각 테스트 케이스는 서로 분리되어야 한다. 이를 위해 가짜 객체(Mock object)를 생성하는 것도 좋은 방법 이다.
- jUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위테스트를 쉽게 해주는 테스트 지원 프레임워크이다.
☆아직 단위테스트를 왜 쓰는지 잘 모르겠다. 오류가 났을 때 확인하고 최적화 코드를 알려줘서 쓰는 거 같기도 하고
Junit으로 테스트를 하면서 버그를 실시간으로 확인하면서 개발을 하려고 하는건지.....
->
(추가 20/12/30)
보통 자바에서 main 메서드를 통해서 실행하거나
웹 어플리케이션의 컨트롤러를 통해서 해당 기능을 실행하는데,
이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에
실행하기 어렵다는 단점이 있는데 Junit 이라는 프레임워크로 테스트를 실행해서
이러한 문제를 해결 할 수 있다.
뭐 이것을 TDD(Test-Driven-Development 테스트 기반 개발) 방식 개발이라고 하던데....
TDD 도 따로 공부해야겠다..
(추가 20/12/30)
이때까지 보통 구현 클래스를 먼저 개발한 뒤 테스트를 작성하는데
TDD는 이것을 뒤집어서~
=> 테스트를 먼저 만든 다음 구현 클래스를 만들어서 실행하는 것
라이브러리 추가해주기
프로젝트 우클릭
Properties 클릭
Add Library
Junit 추가!!
@Test 어노테이션 추가
이제 단위테스트로 배열이나 정렬 테스트 해보자!!!!!!!1
@Test
- @Test가 선언된 메서드는 테스트를 수행하는 메소드가 된다.
- jUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 @Test마다 객체를 생성한다.
마무리
모든 자바 코드는 작고 독립적인 JUnit 테스트가 있다.
그래서 짧은 코딩 테스트 문제를 해결할 수 있고, 코드가 어떻게 작동하는지 이해하기에도 좋은 방법이다.
클래스 안에 테스트 코드를 실행하기 위한 main()메서드를 두는 것보다 독립성을 제공하는 Junit 테스트를
만드는 것이 좋다.
즉, 코드를 이해하려고
System.out.println()
logger.debug()
를 여러 곳에 사용하기 보다는 assertion을 만들고 , 이 assertion을 이용하는 Junit 프레임 워크를 사용하는 것이 좋다.
☆그렇다... 나는 오류를 해결 하기 위해 System.out.println()을 남발 했다.
System.out.println() 쓰는 거 좋지 않다고 어디서 들은 거 같은데
콘솔에 남기는게 좋지 않다고 했나... 뭐 아무튼!!!
테스트가 성공 했다는 말은 assertion이 올바르다는 것을 의미한다.
이런 작은 코드를 이용해 각 기능이 정상적으로 작동하는지 확인 할 수 있다.
이렇게 테스트를 통과하고 성공하는 동안 자신도 모르게 테스트 세트의 기초를 만들게 되고
작성한 테스트 대부분은 기존 코드를 잘 이해할 수 있게 도와주고, 코드를 짧고 독립적인 조각으로 유지 할 수 있게 해준다.
테스트를 작성하는 습관을 갖도록 하자!!