我有一个bundle-context-osgi.xml文件,列出了我的项目所采用的服务和它发布的服务。我还有一个bundle-context.xml,它定义了我的应用程序中定义的bean。如何编写单元测试以确保所有内容都正确连接,并且我可以提供应用程序在服务器上提供的服务?
注意:将其称为“单元测试”可能是错误的,但我认为这个想法很明确。
答案 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);
}
}