我祈祷你很好。
我正在尝试找到一种更有效的方法来为OSGi应用程序运行一些测试。很抱歉,如果已经问过这个问题,但是经过一个小时左右的搜索,我还是无法在SO或Web上的任何地方找到这个问题。
当前,我正在使用JUnit和Eclipse PDE的内置JUnit插件测试启动器。它运行得相当不错-它使用所有指定的捆绑软件(包括测试捆绑软件)启动整个OSGi应用程序,并在OSGi框架内运行JUnit测试。与标准的JUnit Test启动器一样,结果在IDE中报告,这很好,因为不仅可以查看失败消息是什么,而不必浏览日志,还可以双击任何测试失败,它将失败。带您直接到包含失败断言的代码行。进行非常高效的测试驱动开发。
使用这种方法的次优之处在于,启动和停止应用程序的开销相当可观-几秒钟。如果您仅使用一种特定的测试方法并且测试本身花费不到一秒钟的时间,那么这尤其痛苦。
我认为一个理想的解决方案是在Eclipse中使用JUnit启动器,它可以连接并在已经运行的OSGi应用程序中执行测试。如果启动程序还可以在运行测试之前将测试包自动重新部署到正在运行的应用程序,那就太好了。理想情况下,过程如下:
理想地,至少由测试启动框架自动执行至少2-4步。如果它还能自动为您完成第1步,那将是锦上添花。
我还没有找到可以满足所有这些条件的选项。我考虑过:
因此,我有一些我已经排除的选项,其余的我可能有足够的时间和精力来进行。但是,在投入这一时间和精力之前,我想在这里提出一个问题,希望我可以避免任何死胡同或重新发明轮子。
感谢任何帮助/建议/信息。
答案 0 :(得分:0)
我的公司在我们的一个应用程序中使用Eclipse中的JUnit插件测试,并且我们面临着相同的问题,即启动和停止Eclipse应用程序需要很长时间。我不知道有什么可以满足您的需求-我们只是受了这些限制。
对于第二个在Eclipse中也可以运行的项目,我们决定避免JUnit插件测试,而在需要时引入某些Eclipse库的同时更加依赖于模拟。在这种情况下,我们不是在OSGI上下文中运行,而是作为一个更独立的单元测试,依靠模拟。
答案 1 :(得分:0)
作为一点更新:
这篇文章背后的想法是促使我研究Bnd / Bndtools组合(https://bnd.bndtools.org/)的催化剂。它尚不支持现成的功能,但是其Github存储库中存在一些未解决的问题,并且存在一个具有可用原型的分支。看来此功能可能会使其融入到下一版本(4.3)中,有望很快发布。