osgi

Using Pax Exam for integration testing OSGi applications

Introduction#

Pax Exam allows testing of bundles within an OSGi container (e.g. AEM, Apache Karaf). Pax Exam is usually used in conjunction with JUnit.

Getting Started

Here is an example of a test using Pax Exam.

package com.example.project.test;

import static org.junit.Assert.*;
import static org.ops4j.pax.exam.CoreOptions.*;
 
import javax.inject.Inject;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.regression.pde.HelloService;
import org.ops4j.pax.exam.spi.reactors.*;
  
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerMethod.class)
public class SampleTest {
 
    @Inject
    private HelloService helloService;
 
    @Configuration
    public Option[] config() {
 
        return options(
            mavenBundle("com.example.myproject", "myproject-api", "1.0.0-SNAPSHOT"),
            bundle("https://www.example.com/repository/foo-1.2.3.jar"),
            junitBundles()
            );
    }
 
    @Test
    public void getHelloService() {
        assertNotNull(helloService);
        assertEquals("Hello Pax!", helloService.getMessage());
    }
}

Code is from Pax Exam 4 Page


This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow