我有一个Maven项目,它构建了一个非常简单的OSGi包。没有激活器;它唯一的工作就是向OSGi项目交付一些共享代码。我想测试一下,我已经正确地设置和嵌入了所有的依赖项。
因此,我在这种情况下添加了pax- to。
我将在本文的末尾粘贴一个单元测试shell。我的@Test方法实际上是在一个包中运行的吗?这个包又依赖于我项目中构建的包?
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class CommonBundleTest {
@Configuration
public Option[] config() {
return options(
// this is the current project's result artifact
mavenBundle("com.basistech.osgi", "rosette-common-java-lib"),
junitBundles()
);
}
@Test
public void atest() {
}
}发布于 2014-11-16 02:50:51
测试是否在包中运行:是的,Pax Exam为单元测试本身创建了一个TinyBundle。但它不会在config方法中声明的任何包上添加额外的依赖项。
如果您希望确保导入这些包,可以更改构建TinyBundle的方式。
@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
// makes sure the generated Test-Bundle contains this import!
probe.setHeader(Constants.IMPORT_PACKAGE, "*,your.extra.package");
return probe;
}发布于 2014-11-16 21:38:49
由Pax Exam动态创建的所谓探测包包含包含测试类的src/test/java文件夹中的所有类。探测包清单具有Dynamic-ImportPackage: *头,因此通常不需要通过探测构建器添加显式导入。
测试所需的任何包都必须由@COnfiguration方法中的配置选项提供。
如果您希望在包未解析时立即测试失败,可以设置一个config属性:
pax.exam.osgi.unresolved.fail = truehttps://stackoverflow.com/questions/26946676
复制相似问题