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 の構成ファイルの 1 つを編集すると、期待どおりに機能します (既存のプロパティを変更せずに新しいプロパティを追加するだけです)。おそらく問題は、Pax Exam が .cfg ファイルの前に構成を変更しようとすることだと思います機能によってインストールされるため、プロパティを配置する新しいファイルが作成されます。この場合、機能が適切にインストールされた後にのみ .cfg ファイルが編集されるように、このプロセスを同期する方法はありますか?