【发布时间】:2018-02-07 19:06:14
【问题描述】:
我正在尝试对我的 OSGI R6 注释类进行单元测试。我发现我必须在 maven-bundle-plugin 中指定一些信息:http://felix.apache.org/documentation/faqs/apache-felix-bundle-plugin-faq.html#use-scr-metadata-generated-by-bnd-in-unit-tests --> 在单元测试中使用 BND 生成的 SCR 元数据。
如果我在 Intellij 中使缓存无效并重新启动并尝试再次执行我的测试,它会失败。如果我手动触发 maven-bundle-plugin 的 manifest 目标并运行测试成功,我可以自动生成元数据吗?
对于使用较旧的 felix src 注释为类编写的测试,此配置是否仍然有效?
【问题讨论】:
-
“但是我的 felix 给了我同样的老错误” - 你是什么意思?您能否重新编写您的问题以仅包含您所要求的内容?
-
你说得对,我就是这么做的。
-
“Intellij 中的缓存无效”是什么意思?另外,您如何准确地运行您的测试?最重要的是,必须在测试运行之前生成元数据,这就是您提供的链接中的说明所做的。当通过 Maven 运行单元测试并最终在你的 CI/CD 上运行时,它成功了吗?还是失败?
-
使缓存无效只会清除所有“临时文件”,例如生成的元数据。当我右键单击该类并选择“运行测试”时,它们会失败,但即使我使用“mvn clean install”,我也会收到同样的错误,抱怨我的 OSGI 注释类缺少元数据。
-
在命令行使用
mvn clean install构建项目后,请检查是否生成了SCR文件。你可以在target/classes/OSGI-INF处罚款。您链接的页面中说明的步骤应该可以解决问题。