如何在 bnd 中使用测试容器

Howto use testcontainers with bnd

我是 bndtools 的新手。我想使用 testcontainers (https://www.testcontainers.org/) 来测试应该连接到 MQTT 代理的 osgi 包。所以我可以测试连接、连接丢失等策略。 我不明白 maven 和 bnd 存储库是如何协同工作的,所以在我明白之前,我不会使用 maven。然后我尝试通过将它添加到 build.bnd 来“导入”测试容器:

-plugin.6.junit: \
    aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
        releaseUrl=https://repo.maven.apache.org/maven2/; \
        readOnly=true; \
        name="Maven Central JUNIT";\
        revision="org.osgi:org.osgi.test.junit5:0.10.0,\
        org.osgi:org.osgi.test.junit4:0.10.0", \
        org.testcontainers:testcontainers:1.15.2

但是 bnd 显示“无法加载插件 org.testcontainers:testcontainers:1.15.2。” 我迷路了...

您使用的语法错误... 'revision' 参数采用带引号的字符串。该字符串以 junit4:0.10.0", \ 结尾。在引用的字符串关闭后添加测试容器参数。所以以下应该有效:

-plugin.6.junit: \
    aQute.bnd.repository.maven.pom.provider.BndPomRepository; \
        releaseUrl=https://repo.maven.apache.org/maven2/; \
        readOnly=true; \
        name="Maven Central JUNIT";\
        revision="org.osgi:org.osgi.test.junit5:0.10.0,\
            org.osgi:org.osgi.test.junit4:0.10.0, \
            org.testcontainers:testcontainers:1.15.2"

Maven Bnd 存储库更易于使用,因为它允许您在文本文件中指定 GAV,每行一个。