gpt4 book ai didi

java - 为什么运行 Java 测试时 BundleContext 为 null?

转载 作者:行者123 更新时间:2023-12-02 06:48:14 26 4
gpt4 key购买 nike

我编写了一个测试,其中运行一个需要加载 osgi 服务的类。当我开始测试时,每次都会收到 NullPointerException。运行应用程序时它工作正常。我的捆绑上下文为空。我该如何解决这个问题?这是应该加载服务的类的行:

BundleContext ctx = getBundle(this.getClass()).getBundleContext();
deviceCfgModel = getService(ctx, IDeviceCfgModel.class);

A Bundle for the specified bundle class or null if the specified class was not defined by a bundle class loader.

我在 FrameworkUtil API 中找到了该解释,但我仍然不知道该怎么做。

最佳答案

FrameworkUtil.getBundle(Class) 仅当该类由 OSGi bundle 类加载器加载时才有效,即当您运行 OSGi 框架时。

您的 JUnit 测试可能在没有 OSGi 框架的普通 JVM 中运行。因此没有可用的 BundleContext。

如果您需要测试您的包与 OSGi 的交互,那么您需要在 OSGi 中实际运行测试!否则,请将业务代码与特定于 OSGi 的粘合代码隔离,然后在普通的 JUnit 环境中测试业务代码。实现这种隔离的一个好方法是使用声明性服务。

关于java - 为什么运行 Java 测试时 BundleContext 为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com