2016-12-12 5 views
0

통합 테스트에 PAX 시험을 사용하고 있습니다. 테스트하려는 내 번들은 다른 여러 번들에 따라 다릅니다. 불행히도 모든 종속성을 자동으로 가져올 수 없었습니다. 내 테스트 클래스 내부PAX 시험용 테스트 된 번들에 대한 전이 의존성을 얻는 방법 OSGi 테스트 실행

나는

@Configuration 
public Option[] config() { 
    return options(
     junitBundles(), 
     mavenBundle("io.moquette", "moquette-broker") 
    ); 
} 

그것은 불행하게도 모켓 브로커, 단지 하나의 항아리 자체에 대한 종속성을 모두 끌어하지 않습니다 있습니다.

테스트 클래스에서 moquette-broker에 대한 모든 종속성을 실행할 수 있도록 지정하는 방법이 있습니까? exam-maven-plugin을 pom.xml에 넣을 수있는 방법이 있습니까? 물론 나는 문서에서 아무것도 보지 못했습니다. 아니면 수업 시간에 직접 열거해야합니까?

답변

0

평범한 PAX 시험에서는 이러한 행동을 취할 방법이 없습니다. 테스트 할 @Configuration 요소의 모든 종속성을 나열해야합니다.

이렇게 간단하게 만드는 두 가지 방법은 Apache Karaf 또는 bndtools를 사용하는 것입니다. 둘 모두 매우 다른 방식으로 도움을줍니다.

karaf를 배포 플랫폼으로 사용하는 경우 응용 프로그램을 기능으로 정의 할 수 있습니다. 이 기능에서는 pax 시험과 같이 모든 번들 종속성을 나열해야하지만 이와 같은 다른 기능을 참조 할 수도 있습니다. 그래서 실제로는 훨씬 덜 효과적입니다. Pax 시험은 기능을 기반으로 한 카라프 테스트를 실행할 수도 있습니다. Aries JPA example을 참조하십시오.

다른 옵션은 먼저 색인을 정의하는 bndtools를 사용하는 것입니다. 이 인덱스는 pom을 기반으로 할 수 있으며 전 이적 종속성을 포함 할 수도 있습니다. 그런 다음 테스트를 위해 전개 할 최상위 번들로 bndrun 파일을 정의하십시오. 그러면 리졸버는 runbundle의 효과적인 목록을 자동으로 결정합니다. See this test run definition of Aries jax-rs whiteboard. 불행히도 이것은 pax 시험과 함께 작동하지 않습니다. Bndtools에는 자체 러너가 있습니다. bndtools의 maven 통합은 사용 된 스냅 샷 버전에서 볼 수있는 것처럼 안정적이지 않습니다. 다음 버전의 bndtools (3.4.0)에서는 정식 버전에서만이 작업을 수행 할 수 있습니다.

+0

Ahh, k, thanks Christian. 그럴 것 같다고 생각하기 시작했습니다. 불행한 사람. 필자는 Pax 시험에 맡기 겠지만 일단 Maven을 정렬하면 bndtools로 옮길 것입니다. 이것은 OSGi 번들로 갖고 싶었던 다른 사람의 프로젝트를위한 것입니다. 제 자신의 프로젝트에서 Gradle을 buildtool로 사용하면 bndtools이 Gradle에서 얼마나 잘 작동하는지 확인할 수 있습니다. – Keith

+0

Karaf는 재미있어합니다. 필자는 보통 내 시스템에 바닐라 펠릭스를 사용하지만 카라프가 내 시스템을 둘러싸거나 클라우드 종단점으로 사용하도록 확실히 고려할 것입니다. – Keith