首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Pax考试测试内部类

使用Pax考试测试内部类
EN

Stack Overflow用户
提问于 2018-12-28 21:34:47
回答 1查看 200关注 0票数 1

目前我有使用Pax-Exame5测试内部类的测试类。

代码语言:javascript
复制
@ProbeBuilder
public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
   probe.setHeader("Fragment-Host", "com.mycompany.abc");
   return probe;
}

我使用Fragment-Host的原因是为了避免导出捆绑包com.mycompany.abc的内部包。但是我得到了这个错误

代码语言:javascript
复制
org.ops4j.pax.exam.TestContainerException: org.osgi.framework.BundleException: Invalid operation on a fragment.
    at org.ops4j.pax.exam.nat.internal.NativeTestContainer.install(NativeTestContainer.java:135)
    at org.ops4j.pax.exam.nat.internal.NativeTestContainer.install(NativeTestContainer.java:140)
    at org.ops4j.pax.exam.nat.internal.NativeTestContainer.installProbe(NativeTestContainer.java:428)
    at org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactor.setUp(EagerSingleStagedReactor.java:68)
    at org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactor.beforeClass(EagerSingleStagedReactor.java:106)
    at org.ops4j.pax.exam.spi.reactors.ReactorManager.beforeClass(ReactorManager.java:400)
    at org.ops4j.pax.exam.junit.DriverExtension.beforeClassBlock(DriverExtension.java:130)
    at org.ops4j.pax.exam.junit.ExtensibleRunner$1.evaluate(ExtensibleRunner.java:53)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:78)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: org.osgi.framework.BundleException: Invalid operation on a fragment.
    at org.eclipse.osgi.container.Module.checkFragment(Module.java:520)
    at org.eclipse.osgi.container.Module.start(Module.java:408)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:447)
    at org.ops4j.pax.exam.nat.internal.NativeTestContainer.install(NativeTestContainer.java:131)
... 15 more

有没有其他的解决方案?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-16 21:31:21

Pax检查支持置备片段,因为您可以在置备选项上调用.noStart(),以告知Pax检查不能启动包/片段:

代码语言:javascript
复制
CoreOptions.mavenBundle("gid", "aid", "version").noStart();

但是您尝试实现的是不同的,您正在尝试将您的探测包变成被测试包的片段。

您仍然可以实现您的目标,而不必将探针作为片段,如下所示:

  1. 使用TinyBundles创建用于导出测试包的内部包的片段
  2. 使用.noStart()

将片段作为url()选项传递给Pax检查

有关示例,请参阅以下类:

https://github.com/ops4j/org.ops4j.pax.exam2/blob/exam-reactor-3.2.0/itest/osgi/src/it/regression-multi/src/test/java/org/ops4j/pax/exam/regression/multi/fragment/FragmentTest.java#L61

换句话说,不是让探针成为主机的片段,而是在运行中创建一个空片段,以便导出主机的包以便于探针。

免责声明:我没有尝试过这个,这只是一个假设。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53959416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档