2013-06-06 7 views
1

단위 테스트가없는 기존 응용 프로그램에서 작업하고 있습니다. 이 응용 프로그램에 대한 테스트 사례를 작성하고 싶습니다. Bean Mocking은 존재하지 않으며 설정하는데 상당한 시간이 걸릴 것입니다. 따라서 신속하게 시작하고 전혀 테스트 사례가 없기 때문에 통합 테스트를 설정하고 모든 테스트 커버리지에 익숙해지면 천천히 실제 단위로 변환 할 것입니다. 테스트 (조롱하여). 응용 프로그램이 크고 봄 컨테이너를로드하는 데 상당한 시간이 걸리기 때문에 시간을 늘리기위한 제안이 필요합니다. 나는 그것을하는 몇 가지 방법을 생각할 수 있습니다. 스프링 통합 테스트 방법론?

  • 은 실제 서버에 대해

  • 을 실행하여 테스트 케이스를 모든 시간을 실행하는 일부 경량 스프링 용기를 가지고이 경량 컨테이너에 대한 모든 단위 테스트 케이스를 실행합니다. (나 ApplicationContext의에 액세스 할 수 있습니다). (IDE에서 원격으로 Junit을 실행하십시오.)

  • Spring Junit 구성을 활용하고 각각의 개별 테스트 케이스에 대한 컨텍스트를 다시로드하지 않도록하십시오.

나는이 유스 케이스가 생겼을 것이라고 확신한다. 어떤 통찰력이라도 높이 평가된다.

답변

0

컨텍스트 캐싱은 Spring의 내장 기능이므로 테스트 케이스가 동일한 구성 파일 (또는 파일 집합)을 사용하면 Spring은 반복적으로 컨텍스트를 다시로드하지 않습니다. 참조 문서의 Context management and caching 섹션 검토 : 기본적으로

을 한 번로드 구성된 ApplicationContext 각 테스트에 재사용된다. 따라서 셋업 비용은 테스트 슈트 당 한 번만 발생하며 이후의 테스트 실행은 훨씬 빠릅니다. 이 문맥에서 테스트 스위트라는 용어는 모든 테스트가 동일한 JVM에서 실행된다는 것을 의미합니다.

+0

하지만 각 단위 테스트 케이스를 개별적으로 실행하려면 응용 프로그램 컨텍스트가 손실됩니다. 유일한 방법은 Junit 테스트 케이스 전체를 실행할 때입니다. 단위 테스트 능력을 상실하고 TDD와 관련하여이 방법론은 완전히 쓸모가 없습니다. –

+0

@ doc_180 문제는 단지 단위 테스트가 아닌 것 같습니다.봄을 시작하는 데 걸리는 시간입니다. 개발을 위해 앱을 로컬로 실행하려면이 문제에 직면해야합니다. Spring을 시작하는 속도를 줄이는 방법을 찾아야합니다. 로깅을 추가하고 많은 시간이 걸리는 것을 찾으십시오. 이것은 가장 쉬운 해결책이 될 것입니다. – jasop

0

Spring에서 테스트를 실행할 때 테스트를 실행할 응용 프로그램 컨텍스트 구성으로 지정할 수 있습니다. 따라서 프로덕션 응용 프로그램 컨텍스트를 사용할 필요가 없으므로 테스트를 위해 특수한 구성을 만들 수 있습니다. 개인적으로 "통합 테스트 응용 프로그램 컨텍스트"및 "단위 테스트 응용 프로그램 컨텍스트"있습니다. 그러나 당신은 이것을 더 부술 수 있습니다.

이것을 설정하는 가장 쉬운 방법은 수퍼 클래스에서 응용 프로그램 컨텍스트를 설정하고 각 테스트가 그 중 하나에서 확장되도록하는 것입니다.

예 : 설정 : 테스트

public class BlahTest extends BaseSpringUnitTest { 

다음 단계는 당신이 당신의 봄 컨텍스트의 시작 속도를 높일 수있는 방법을 작동하는 것에 대한

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:BaseSpringIntegrationTestContext.xml") 
public abstract class BaseSpringIntegrationTest { 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:BaseSpringUnitTestContext.xml") 
public abstract class BaseSpringUnitTest { 

다음

. 일부 큰 구성 요소는 일부 테스트의 경우 전혀로드 할 필요가 없을 수 있습니다.