Back-end/JAVA,Spring

Junit이란? 어노테이션

cheersHena 2018. 11. 8. 16:36
반응형


범용적으로 사용되는 단위 테스트 framework 이다.


Java언어의 단위(기능)테스트를 위해 사용한다.

즉, 테스트 시 기대값과 결과값을 비교한다. 일치하면 테스트성공.


프로그래밍에서 유닛테스트라는 소스코드의 특정 모듈이 의도한 대로 정확히 작동하는지 검증하는 절차이다.

즉, 모든 함수에 대한 테스트케이스(test case)를 작성하는 절차.

이를 통해서 언제라도 코드변경으로 인해 문제 발생시, 단시간 내에 파악하고 바로 잡을 수 있다.


Junit은 단독으로 돌아간다. web처럼 WAS필요없이 run시키면 돌아간다.

와스없이 단독으로 돌아가기때문에 스프링에 설정파일을 직접 설정해주어 실행한다. 실제로는 사용자에게 입력받아야 하는데 와스가 없기때문에 임의의 값을 주고, 기능의 값을 테스트 한다. 즉, 웹환경 테스트가 아닌 순수 기능에 대한 테스트이다. 사용자로부터 입력받았다는 가정 하에 임의의 값으로 테스트를 하는 것이다.


언제 사용하나?

외부데이터를 검증할때 주로 사용한다.

의도적 에러코드 작성 > Run As > JunitTest > 우측 빨간에러 확인.



org.springframework.dao.DataIntegrityViolationException:
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'type_seq' cannot be null ...
이때 에러 내용은 자세히나오지 않는다. log4j설정해놓으면 log에서 자세한 에러 확인할 수 있다.. 

** 이때 try catch쓰면 에러가 나도 초록이 나오기 때문에 에러를 알아차리지 못할수 있으므로 신경써야한다!

단위<-> 통합테스트란? 
: 출시 release 이전에 모든기능이 정상인지 확인하는것 .. (과정) 



 Junit 어노테이션 @



@Test

테스트어노테이션 선언시 테스트를 수행하는 메소드가 된다.

Junit은 각각의 테스트가 서로 영향을 주지않고 독립적으로 실행되며, @Test마다 객체를 생성한다. 


@Ignore

테스트 실행하지 않는다


@Before

테스트 메소드가 실행되기 전에 반드시 실행한다.


@After

테스트 메소드가 실행된 후 실행한다


@BeforeClass

테스트 메소드보다 먼저 한번만 수행되어야 할 경우에 사용한다.

클래스가 로딩되는 시점에서 한번만 실행한다.


@AfterClass

테스트 메소드보다 뒤에 한번만 수행되어야 할 경우에 사용한다.

클래스가 로딩되는 시점에서 한번만 실행한다.



Spring-Test 어노테이션 @


@RunWith

junit프레임워크의 테스트 실행을 확장할때 사용하는 어노테이션이다.

SpringJUnit4ClassRunner라는 클래스를 지정해주면 제이유닛이 테스트를 진행하는 중에 ApplicationContext를 만들고 관리해준다.

싱글톤 ApplicationContext를 보장한다


@ContextConfiguration

스프링 빈 설정 파일의 위치를 지정할때 사용되는 어노테이션이다.


@AutoWired

오토와이어드는 스프링 DI(의존주입)에서 사용되는 특수 어노테이션이다.

해당 변수에 자동으로 빈을 매핑해준다.












반응형