Pergunta

Atualmente, estou trabalhando em um novo sistema de controle de versão como parte de um projeto de último ano na universidade.A ideia é torná-lo altamente adaptável e conectável.

Estamos usando a estrutura OSGi (implementação Equinox) para gerenciar nossos plug-ins.Meu problema é que não consigo encontrar um método simples e fácil de usar para testar pacotes OSGi.

Atualmente, tenho que construir o pacote usando Maven e depois executar um equipamento de teste.Estou procurando algo como o executor de testes JUnit para Eclipse, pois isso me poupará muito tempo.

Existe uma maneira rápida e fácil de testar pacotes OSGi?

EDITAR:Não preciso de algo para testar plug-ins do Eclipse ou componentes GUI, apenas pacotes OSGi.

EDITAR2:Existe alguma estrutura que suporte JUnit4?

Foi útil?

Solução

Spring Dynamic Modules tem excelente suporte para testando pacotes OSGi.

Outras dicas

Mais recentemente, você deveria dar uma olhada no Pax Exam:http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

Este é o esforço atual do OPS4J relacionado aos testes.

Existe uma estrutura de teste OSGi de código aberto dedicada no OPS4J (ops4j.org) chamada Drone Pax.

Você pode querer dar uma olhada no Pax Drone ([http://wiki.ops4j.org/confluence/x/KABo]) que permite usar todas as versões Felix, bem como Equinox e Knopflerfish em seus testes.

Obrigada Toni

Aqui estão algumas ferramentas ainda não mencionadas:

  • estou a usar Tycho, que é uma ferramenta para usar o Maven para construir plug-ins do Eclipse.Se você criar testes dentro de seus próprios plug-ins ou fragmentos de plug-ins, o Tycho poderá executar cada conjunto de testes dentro de sua própria instância OSGi, com todas as dependências necessárias. Introdução e mais informações.Isso está funcionando muito bem para mim.

  • jUnit4OSGI parece simples.Você cria subclasses de OSGiTestCase e obtém métodos como getServiceReference(), etc.

  • Construtor de plug-ins, um sistema de compilação headless para pacotes OSGi/plug-ins Eclipse, tem uma estrutura de execução de testes chamado Suíte de teste automático.Ele executa os testes no contexto do ambiente OSGi, após a etapa de construção.Mas, não parece ter sido mantido por vários anos.Acho que muitos projetos Eclipse estão migrando do Pluginbuilder para o Tycho.

  • Outra opção é iniciar uma instância do um contêiner OSGi dentro de seu teste de unidade, que você executa diretamente, conforme explicado aqui.

  • Aqui está alguém que escreveu um pequeno coletor de teste de pacote, que procura testes JUnit (3) e os executa.

O Eclipse possui um tipo de configuração de inicialização para executar testes JUnit no contexto de um Eclipse (ou seja,aplicação OSGi):

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

Se você precisar testar os componentes da GUI que encontrei SWTBot faz o trabalho.

Tratado é uma estrutura de contrato (teste) bastante acadêmica, mas com algumas ideias interessantes.Existem artigos publicados sobre ele e pessoas atualmente trabalhando para melhorá-lo.

O Ambiente de execução de teste ProSyst é uma ferramenta de teste útil para pacotes configuráveis ​​OSGi.Ele também oferece suporte a testes JUnit como um dos modelos de teste possíveis.

Para testes unitários use o framework EasyMock ou crie suas próprias implementações das interfaces necessárias para teste.

Acho que encontramos o mesmo problema e criamos nossa própria solução.Existem diferentes partes da solução:

  • Um junit4runner que captura todos os serviços OSGi que possuem uma propriedade especial definida.Ele executa esses serviços capturados com o mecanismo JUnit4.As anotações JUnit devem ser colocadas em interfaces implementadas pelos serviços.
  • Um plugin maven que inicia uma estrutura OSGi (uma estrutura customizada pode ser criada como dependência maven) e executa os testes de unidade dentro do ciclo de vida maven de teste de integração.
  • Um pacote OSGi do implementador.Se isso for colocado em seu contêiner OSGi, uma janela simples e sempre visível será aberta, onde você poderá descartar as pastas do seu projeto (do total comandante ou do eclipse).Isso irá reimplantar esse pacote.

Com as ferramentas você pode fazer TDD e fazer com que os testes escritos sempre sejam executados dentro da fase de integração do maven.É recomendado usar eclipse com m2e e maven-bundle-plugin pois neste caso o target/classes/META-INF/MANIFEST.MF é regenerado assim que você salva uma classe em sua fonte para que você possa arrastar o projeto e soltar para a janela do implementador.Os pacotes OSGi que você desenvolve não precisam ter nenhum recurso especial (como ser um plugin do Eclipse ou algo assim).

Toda a solução é OpenSource.Você pode encontrar um tutorial em http://cookbook.everit.org

Durante os últimos dois anos Tycho - um novo sistema de construção baseado em Maven para OSGi - tornou-se bastante popular entre a Eclipse Foundation.Esta estrutura também inclui um método para usar o Maven Surefire para testar pacotes OSGi em testbeds separados...

Que tal bnd-testing-maven-plugin?

Ele permite executar JUnit dentro de um contêiner em execução como Felix ou Equinox.Se você usou o BNDTools para Eclipse, isso é muito semelhante, mas apenas maven sem Eclipse e sem UI.

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

veja também o arquétipo effectosgi para maven.Isso lhe dará um bom ponto de partida para construir seu projeto ou apenas adicionar testes.

https://github.com/efficientosgi

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top