我们通过执行java -ea xxx
在核心java应用程序中启用断言,我也知道如何通过更改命令行选项在eclipse中启用断言。
但是如何在OSGi包中启用断言。我有一个捆绑包,我想要在启用断言的情况下进行测试,并且我想在部署时禁用它们(默认情况下禁用断言会很容易禁用)。但是如何启用呢?
答案 0 :(得分:2)
您可以使用ClassLoader#setDefaultAssertionStatus(Boolean)
方法。它仅为尚未加载的类设置断言状态。因此,放置此声明的最佳位置是捆绑激活器:
public class Activator implements BundleActivator {
@Override
public void start(BundleContext bundleContext) throws Exception {
getClass().getClassLoader().setDefaultAssertionStatus(true);
}
@Override
public void stop(BundleContext context) throws Exception {
}
}
请记住在maven-bundle-plugin
配置中注册激活器:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-Activator>my.project.Activator</Bundle-Activator>
...