我正在尝试使用JaCoCo进行代码覆盖。我从Eclipse运行Liberty(使用Eclipse启动器)。在jvm.options中,我添加了以下行:(用< location>替换路径)
-Xshareclasses:none
-javaagent:<location>/jacocoagent.jar=destfile=jacoco.exec,output=file,append=false,classdumpdir=./classdump
然而,在运行测试后,我没有看到任何覆盖信息。看起来JaCoCo无法链接到我的Web应用程序war文件中的Java类。
是否有一个由具有java类的自由运行的不同进程?可以将java代理附加到该进程吗?
答案 0 :(得分:1)
您使用的是JaCoCo 0.7.3或更高版本吗?如果是,我怀疑问题是由issue #272中的更改引起的,因为我上次检查过,WebSphere Liberty概要文件没有定义具有CodeSource位置的类,因此JaCoCo中的这种启发式操作会导致在WebSphere Liberty概要文件上运行的应用程序中的所有类被忽略了。如果您可以在最近的一些Liberty修补程序(public JPanel BallPanel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 380);
}
};
//...
private void startUp() {
JLabel RightHandMessage;
RightHandMessage = new JLabel("<html><col=000000>Welcome to the ball game!</font></html>", JLabel.CENTER);
RightHandMessage.setLocation(getRightHandMessageBounds(1), getRightHandMessageBounds(2));
BallFrame.setLocationRelativeTo(null);
BallFrame.setTitle("The Ball Game V1 - Cam");
BallPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.VERTICAL;
BallPanel.add(createVerticalSeparator(), gbc);
gbc.gridx = 1;
gbc.weighty = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.NORTH;
BallPanel.add(RightHandMessage, gbc);
BallFrame.setContentPane(BallPanel);
BallFrame.pack();
BallFrame.setLocationByPlatform(true);
//BallPanel.setVisible(true);
BallFrame.setVisible(true);
}
)上确认您的应用程序的情况,那么我建议您打开WebSphere RFE,JaCoCo issue或两者。
答案 1 :(得分:0)