我正在使用 Pax Exam 对我的 OSGi 应用程序执行集成测试。我有一个配置工厂,我在其中指定要安装在测试容器中的应用程序的 Karaf 功能,然后修改作为我的功能的一部分安装的 .cfg 文件的一些属性。
public class TestConfigurationFactory implements ConfigurationFactory {
@Override
public Option[] createConfiguration() {
return options(
karafDistributionConfiguration()
.frameworkUrl(
maven().groupId("org.apache.karaf")
.artifactId("apache-karaf")
.version("3.0.1").type("tar.gz"))
.unpackDirectory(new File("target/exam"))
.useDeployFolder(false),
keepRuntimeFolder(),
// Karaf (own) features.
KarafDistributionOption.features(
maven().groupId("org.apache.karaf.features")
.artifactId("standard").classifier("features")
.version("3.0.1").type("xml"), "scr"),
// CXF features.
KarafDistributionOption.features(maven()
.groupId("org.apache.cxf.karaf")
.artifactId("apache-cxf").version("2.7.9")
.classifier("features").type("xml")),
// Application features.
KarafDistributionOption.features(
maven().groupId("com.me.project")
.artifactId("my-karaf-features")
.version("1.0.0-SNAPSHOT")
.classifier("features").type("xml"), "my-feature"),
KarafDistributionOption.editConfigurationFilePut(
"etc/com.me.test.cfg", "key", "value"));
}
}
我在其中指定的属性editConfigurationFilePut
已正确修改,但 .cfg 文件的其余属性已被删除。如果我使用该editConfigurationFilePut
方法编辑 Karaf 的配置文件之一,它会按预期工作(只是添加新属性而不修改现有属性)所以我认为问题可能是 Pax Exam 尝试在 .cfg 文件之前修改配置由我的功能安装,因此会创建一个新文件来放入该属性。如果是这种情况,是否有某种方法可以同步此过程,以便仅在正确安装该功能后编辑 .cfg 文件?