我祈祷你身体健康。
我正试图找到一种更有效的方法来为OSGi应用程序运行一些测试。如果这个问题已经被问到了,我很抱歉,但是在搜索了一个多小时之后,我在网上的任何地方都找不到这个问题。
目前,我正在使用JUnit和Eclipse的内置JUnit插件测试启动程序。它工作得相当好--它用所有指定的包(包括测试包)启动整个OSGi应用程序,并在OSGi框架内运行JUnit测试。结果在IDE中报告,就像标准的JUnit测试启动程序一样,这很好,因为不仅可以看到失败消息是什么,而不必遍历日志,还可以双击任何测试失败,它将直接带您进入包含失败断言的代码行。为非常有效的测试驱动开发。
这种方法的一个次优之处是,启动和停止应用程序存在相当大的开销--几秒钟。如果您只使用一种特定的测试方法,并且测试本身只运行不到一秒,这就特别痛苦了。
我认为一个理想的解决方案是在Eclipse中的JUnit启动程序,它可以连接和执行已经在运行的OSGi应用程序中的测试。如果启动程序还能在运行测试之前自动地将测试包重新部署到正在运行的应用程序中,那就太好了。理想情况下,程序如下:
理想情况下,至少步骤2-4将由测试启动框架作为最低限度的自动化。如果它也能自动为你处理第一步的话,那就是锦上添花了。
我还没有找到任何可以满足所有这些标准的选项。我考虑过:
所以我已经排除了几个选择,剩下的我有几个,我可以用足够的时间和精力去工作。然而,在承诺这段时间和努力之前,我想在这里提出这个问题,希望我能避免任何死胡同或重新发明车轮。
任何帮助/建议/信息都很感激。
发布于 2019-06-13 11:34:16
作为一个更新:
这篇文章背后的想法是我研究Bnd/Bndtools组合(https://bnd.bndtools.org/)的催化剂。它还不支持开箱即用,但它的Github存储库中存在一些未解决的问题,并且有一个带有工作原型的叉子。看起来,这个特性可能会进入下一个版本(4.3),希望很快就能发布。
更新1:这个特性并没有进入Bndtools的4.3版本,但现在它作为包biz.aQute.tester.junit-platform成为4.4开发快照的一部分。文档可在这里获得:https://bnd.bndtools.org/chapters/310-testing.html
更新2: Bndtools的4.4开发快照变为5.0,并于2020年1月发布。
发布于 2018-08-15 17:23:26
我的公司为我们的一个应用程序在Eclipse中使用JUnit插件测试,我们面临的问题是启动和停止Eclipse应用程序需要很长时间。我不知道有什么事情能做你想要做的事情--我们只是生活在局限之中。
对于在Eclipse中也能工作的第二个项目,我们决定避免JUnit插件测试,并在需要时更多地依赖于模拟,同时引入一些Eclipse库。在这种情况下,我们不是在OSGI上下文中运行,而是作为一个更孤立的单元测试,依赖于模拟。
https://stackoverflow.com/questions/51624405
复制相似问题