문제

현재 저는 대학 마지막 학년 프로젝트의 일환으로 새로운 버전 관리 시스템을 개발하고 있습니다.아이디어는 적응성이 뛰어나고 플러그 가능하게 만드는 것입니다.

우리는 플러그인을 관리하기 위해 OSGi 프레임워크(Equinox 구현)를 사용하고 있습니다.내 문제는 OSGi 번들을 테스트하기 위한 간단하고 사용하기 쉬운 방법을 찾을 수 없다는 것입니다.

현재는 Maven을 사용하여 번들을 빌드한 다음 테스트 도구를 실행해야 합니다.나는 많은 시간을 절약해 줄 Eclipse용 JUnit 테스트 실행기와 같은 것을 찾고 있습니다.

OSGi 번들을 테스트하는 빠르고 쉬운 방법이 있습니까?

편집하다:Eclipse 플러그인이나 GUI 구성 요소를 테스트하는 데 필요한 것은 없으며 OSGi 번들만 있으면 됩니다.

편집2:JUnit4를 지원하는 프레임워크가 있나요?

도움이 되었습니까?

해결책

Spring Dynamic Modules는 다음을 훌륭하게 지원합니다. OSGi 번들 테스트.

다른 팁

최근에는 Pax 시험을 살펴보아야 합니다.http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

이것이 테스트와 관련된 OPS4J의 현재 노력입니다.

OPS4J(ops4j.org)에는 전용 오픈 소스 OSGi 테스트 프레임워크가 있습니다. 팍스 드론.

Pax Drone([http://wiki.ops4j.org/confluence/x/KABo])를 사용하면 테스트에서 모든 Felix 버전과 Equinox 및 Knopflerfish를 사용할 수 있습니다.

건배, 토니

아직 언급되지 않은 몇 가지 도구는 다음과 같습니다.

  • 나는 사용하고있다 티코, 이는 Maven을 사용하여 Eclipse 플러그인을 빌드하기 위한 도구입니다.자체 플러그인 또는 플러그인 조각 내부에 테스트를 생성하는 경우 Tycho는 필요한 모든 종속성을 포함하여 자체 OSGi 인스턴스 내부에서 각 테스트 세트를 실행할 수 있습니다. 소개 그리고 추가 정보.이것은 나에게 아주 잘 작동합니다.

  • jUnit4OSGI 간단해 보입니다.OSGiTestCase의 하위 클래스를 만들고 다음과 같은 메소드를 얻습니다. getServiceReference(), 등.

  • 플러그인 빌더, OSGi 번들/Eclipse 플러그인을 위한 헤드리스 빌드 시스템인 은 테스트 실행 프레임워크 ~라고 불리는 자동 테스트 스위트.빌드 단계 후에 OSGi 환경의 컨텍스트에서 테스트를 실행합니다.하지만 몇 년 동안 유지되지 않은 것 같습니다.많은 Eclipse 프로젝트가 Pluginbuilder에서 Tycho로 마이그레이션되고 있는 것 같습니다.

  • 또 다른 옵션은 인스턴스를 시작하는 것입니다. OSGi 컨테이너 이내에 당신의 단위 테스트, 설명된 대로 직접 실행 여기.

  • 여기 글을 쓴 사람이 있어요. 작은 번들 테스트 수집기, JUnit(3) 테스트를 검색하고 실행합니다.

Eclipse에는 Eclipse 컨텍스트에서 JUnit 테스트를 실행하기 위한 시작 구성 유형이 있습니다(예:OSGi) 애플리케이션:

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm

내가 찾은 GUI 구성 요소를 테스트해야 하는 경우 SWTBot 일을 끝내게 됩니다.

조약 꽤 학문적이지만 좋은 아이디어가 있는 계약(테스트) 프레임워크입니다.이에 대해 출판된 논문이 있고, 현재 이를 개선하기 위해 노력하는 사람들이 있습니다.

그만큼 ProSyst 테스트 실행 환경 OSGi 번들을 위한 유용한 테스트 도구입니다.또한 가능한 테스트 모델 중 하나로 JUnit 테스트를 지원합니다.

단위 테스트의 경우 EasyMock 프레임워크를 사용하거나 테스트에 필요한 인터페이스를 직접 구현해 보세요.

제 생각엔 우리도 같은 문제를 겪었고 자체적으로 해결책을 찾았던 것 같습니다.솔루션에는 여러 부분이 있습니다.

  • 특별한 속성이 정의된 모든 OSGi 서비스를 포착하는 junit4runner입니다.JUnit4 엔진을 사용하여 이러한 포착된 서비스를 실행합니다.JUnit 주석은 서비스가 구현하는 인터페이스에 배치되어야 합니다.
  • OSGi 프레임워크(사용자 정의 프레임워크는 Maven 종속성으로 생성될 수 있음)를 시작하고 통합 테스트 Maven 수명 주기 내에서 단위 테스트를 실행하는 Maven 플러그인입니다.
  • 배포자 OSGi 번들.이를 OSGi 컨테이너에 놓으면 프로젝트 폴더를 삭제할 수 있는 간단한 항상 상단 창이 열립니다(전체 명령 또는 Eclipse에서).그러면 해당 번들이 재배포됩니다.

도구를 사용하면 TDD를 수행할 수 있고 작성된 테스트가 항상 Maven 통합 단계 내에서 실행되도록 할 수 있습니다.m2e 및 maven-bundle-plugin과 함께 eclipse를 사용하는 것이 좋습니다. 이 경우 소스에 클래스를 저장하자마자 target/classes/META-INF/MANIFEST.MF가 재생성되므로 프로젝트를 드래그 앤 드롭할 수 있습니다. 배포자 창으로 이동합니다.개발하는 OSGi 번들은 특별한 기능(예: Eclipse 플러그인 등)을 가질 필요가 없습니다.

전체 솔루션은 OpenSource입니다.다음에서 튜토리얼을 찾을 수 있습니다. http://cookbook.everit.org

지난 몇 년 동안 티코 - OSGi를 위한 새로운 Maven 기반 빌드 시스템 - Eclipse Foundation에서 꽤 인기를 얻었습니다.이 프레임워크에는 Maven Surefire를 사용하여 별도의 테스트베드에서 OSGi 번들을 테스트하는 방법도 포함되어 있습니다.

bnd-testing-maven-plugin은 어떻습니까?

Felix 또는 Equinox와 같은 실행 중인 컨테이너 내에서 JUnit을 실행할 수 있습니다.Eclipse용 BNDTools를 사용한 경우 이는 매우 유사하지만 eclipse가 없고 UI가 없는 maven일 뿐입니다.

https://github.com/bndtools/bnd/tree/master/maven/bnd-testing-maven-plugin

maven에 대한 효과적인osgi 원형도 살펴보세요.이는 프로젝트를 빌드하거나 테스트를 추가하기 위한 좋은 출발점이 될 것입니다.

https://github.com/효과적인osgi

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top