如何进行测试Spring / OSGi配置的单元测试?

时间:2015-03-18 01:14:48

标签: java spring unit-testing osgi osgi-bundle

我有一个bundle-context-osgi.xml文件,列出了我的项目所采用的服务和它发布的服务。我还有一个bundle-context.xml,它定义了我的应用程序中定义的bean。如何编写单元测试以确保所有内容都正确连接,并且我可以提供应用程序在服务器上提供的服务?

注意:将其称为“单元测试”可能是错误的,但我认为这个想法很明确。

1 个答案:

答案 0 :(得分:2)

对于OSGi集成测试我通常使用Pax考试。它将启动一个osgi容器发布所有已配置的包,并将从testsources创建一个小包,作为OSGi包进行部署。 有了它,您甚至可以通过@Inject方式访问所有注册的服务。 最好看看Pax Exam documentation

简而言之,您创建了一个新的集成测试模块,您可以在其中配置测试用例中的依赖项:

@RunWith(PaxExam.class)
@ExamReactorStrategy(PerMethod.class)
public class MyTest {

@Inject
protected BundleContext bundleContext;

@Inject 
MyService service;

...

@Configuration
public Option[] configure() {
    return options(
            workingDirectory("target/paxexam/"),
            cleanCaches(true),
            junitBundles(),
            mavenBundle().groupId("my.group.id")
                    .artifactId("my-artifact")
                    .version("1.0.0")
    ...
          );
    }

    ...

    @Test
    public void test() throws Exception {
         assertNotNull(service);
    }
}