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이 올바르다는 것을 의미한다.

이런 작은 코드를 이용해 각 기능이 정상적으로 작동하는지 확인 할 수 있다.

 

이렇게 테스트를 통과하고 성공하는 동안 자신도 모르게 테스트 세트의 기초를 만들게 되고

작성한 테스트 대부분은 기존 코드를 잘 이해할 수 있게 도와주고, 코드를 짧고 독립적인 조각으로 유지 할 수 있게 해준다.

 

 

테스트를 작성하는 습관을 갖도록 하자!!

 

 

 

+ Recent posts