2013-03-09 1 views
0

두 가지 응용 프로그램이 있습니다. 나는이 애플리케이션 중 하나에 대한 통합 유닛 테스트를 수행했지만 다른 애플리케이션을 호출하는 서비스는 조롱을 받았다. (실제 서비스를 주입하는 대신 다른 서비스를 조롱했다.)다른 응용 프로그램에 연결을 조롱하지 않고 통합 테스트

모의하지 않고도 다른 응용 프로그램과 실제 연결을 만들 수있는 방법이 있습니까?

간단한 예제가 도움이 될 것입니다.

미리 감사드립니다.

+0

나는 물건을 조롱하는 것이 오히려 좋은 습관이라고 생각합니다. 다른 응용 프로그램에서 서비스를 테스트해야하지만 첫 번째 응용 프로그램을 통해 테스트하지 않아야합니다. – benzonico

답변

0

실제 서비스를 주입하고 통합 테스트를 수행하십시오. 문제는 주입해야 할 모든 것을 주입 할 수 있는지 확인하는 것입니다. foo가 bar에 의존하는 서비스 foo와 bar를 호출 할 수 있습니다. 바가 응용 프로그램 서버의 어떤 것에 의존하면 응용 프로그램 서버에서 응용 프로그램을 실행하지 않기 때문에 장치 중에 시작하는 것이 문제 일 수 있습니다.

통합 테스트는 중요하고 중요하지만 설치를 신중하게 고려해야합니다. 내 응용 프로그램에서 통합 테스트를 설정하는 방법은 스프링 프로파일을 사용하여 구성 조합을 분리하는 것입니다. 예를 들어 프로필이 호출되었습니다.

  • 생산
  • 개발
  • 용기
  • 독립

그래서 당신은 모든 올바른 콩처럼 주입하는 설정 적절한 프로파일을 시작하는 검사를 할 수있는 방법 그래서.

@ActiveProfile(profiles={"deveolpment","standalone"}) 
@RunWith ... etc other spring annotations to configure a test 
public class SomeJunitTest { 
} 

프로필을 사용하면 각 테스트에 대해 구성된 빈 집합을 세밀하게 제어 할 수 있습니다.

또한 통합 테스트를 위해 필자는 TestNG가 통합 테스트를 쉽게 작성하는 기능을 가지고 있기 때문에 JUnit을 훨씬 더 쉽게 사용할 수 있다는 것을 발견했다.

+0

답변 해 주셔서 감사합니다! 하지만 어떻게 모든 것을 구성해야합니까? 내 말은, 응용 프로그램 서버 내에서 테스트를 실행하지 않습니다. 스프링 문서의 Testing 장 (http://static.springsource.org/spring/docs/3.0.x/reference/testing.html)에서 권장합니다. 어떻게해야합니까? – meniari

관련 문제