2012-06-18 2 views
2

저는 junit을 봄으로 설정하려고합니다. 그리고 Spring의 의존성 주입을 사용하여 테스트 클래스를 채우려고합니다. 이게 내가 시도해야 할게 있는지 궁금하네요? 내가 봄에 볼 수있는 것은 테스트 클래스를 인스턴스화하고 DI를 수행하지만 JUnit은 DI를 수행하지 않은 자체 인스턴스를 작성하고 테스트가 실패하고 있다고 생각합니다. 저는 JUnit 4.x와 Spring 3.1.1을 사용하고 있습니다.Junit with spring을 사용합니다.

+1

"@RunWith (SpringJUnit4ClassRunner.class)"및 "@ContextConfiguration (locations = { '/application-config.xml'})''주석을 사용하고 있습니까? – timaschew

+0

@opike 그래서 JUnit 테스트 클래스 자체에 의존성을 주입하고 싶습니까? – Ritesh

답변

7

스프링을 사용하여 테스트에 의존성을 주입하여 통합 테스트를 수행 할 수 있습니다. 이

@RunWith(SpringJUnit4ClassRunner.class) 
@Transactional 
@ContextConfiguration(locations = "/applicationContext-TEST.xml") 
public class MyTest {} 

처럼 주석 그러나 단지 POJO의로 스프링 관리 클래스를 테스트하고 적절한 mock objects을 사용하는 것이 바람직 할 수있다.

예를 들어, 많은 컨트롤러 메소드에는 Spring이 런타임에 모델을 주입했습니다. 그러나 유닛 테스트에 대해서는 HashMap 인스턴스를 전달합니다. 그리고 인터페이스 클래스로 설계되어 세터 주입을 사용하기 때문에 조롱 한 DAO에서 전달할 수있는 서비스 계층 클래스는 다음과 같습니다.

1

jUnit을 사용하면 각 테스트는 테스트 커버리지를 벗어난 종속성없이 격리되어야합니다. Spring에서 mock bean 인스턴스화를 제공하는 몇 가지 테스트 프레임 워크가있다.

Stubs and Mocks에는 우수한 마틴 파울러 article이 있습니다.

Mockito와 PowerMock을 함께 사용하면 스프링 구성 요소, 서비스 및 컨트롤러를 테스트하는 데 도움이 될 수 있습니다.

Mockito 소개 : https://code.google.com/p/mockito/
PowerMock 소개 : http://code.google.com/p/powermock/

나는이 배우고 구현, 연구하는 시간을 걸릴 것 이해하지만이 종속성 주입 된 콩 JUnit 테스트를 작성하기위한 매우 유용합니다.

+0

나는 현재 내가하고있는 일이 "순수한"단위 테스트가 아니라는 것을 이해하지만, 실용적인 이유 때문에이 과정을 계속 진행할 것입니다. 나중에 나는 당신이 제공 한 모의 테스트 프레임 워크를 조사 할 것이다. – opike

관련 문제