使用tycho-surefire-plugin执行JUnit测试时,tycho会分配一个equinox运行时。
在极少数情况下,可能会发生OSGi测试运行时中的某些bundle无法解析/启动(例如,包使用冲突)。
如果您阅读调试日志(maven CLI选项-X
),您会发现类似
!ENTRY org.eclipse.osgi 2 0 2012-10-08 16:41:31.635
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2012-10-08 16:41:31.635
An error has occurred. See the log file
C:\mytestproject.tests\target\work\configuration\1349705136008.log.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:03.181s
[INFO] Finished at: Mon Oct 08 16:17:16 CEST 2012
[INFO] Final Memory: 20M/309M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:0.15.0:test (default-test) on project mytestproject.tests: An unexpected error occured (return c
ode 13). See log for details. -> [Help 1]
在程序包使用冲突的情况下,eclipse控制台日志不能提供足够的信息。
如何分析由tycho分叉的OSGi测试运行时中的包?
答案 0 :(得分:8)
以远程调试模式启动测试(只需在CLI上指定-DdebugPort=8000
)并在本地端口上启动OSGi控制台,例如: 1234:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<systemProperties>
<osgi.console>1234</osgi.console>
</systemProperties>
</configuration>
</plugin>
如果测试甚至没有开始,请在您的某个测试类或org / eclipse / tycho / surefire / osgibooter / OsgiSurefireBooter中设置断点。然后,
telnet localhost 1234
你可以使用通常的OSGi控制台命令,如ss, diag, bundle
等来分析“体内”问题。
答案 1 :(得分:0)
或者,您可以使用-consolelog
运行或将eclipse.consoleLog
属性设置为true
属性。如果您使用Tycho运行,则可以使用<argLine>-Declipse.consoleLog=true</argLine>
。