我正在尝试对生成GUI组件的代码进行单元测试。
这是我的测试代码。
@Test
public void testMainFrame() {
mFrame = new MainFrame();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
fail("MainFrame Test Fail");
}
assertTrue(true);
}
目标代码就在这里。
public MainFrame() {
super("Title");
/* Main page */
clayout = new CardLayout();
headerPane = new JPanel(clayout);
statusField = new JTextArea("TEST TEXT!!!");
statusField.setEditable(false);
headerPane.add(statusField);
startButton = new JButton("Start");
closeButton = new JButton("Close");
startButton.addActionListener(this);
closeButton.addActionListener(this);
this.setLayout(new BorderLayout());
this.setSize(500, 400);
headerPane.setPreferredSize(new Dimension(500, 50));
mainPane = new JPanel();
mainPane.setLayout(new BorderLayout());
mainPane.add(headerPane, BorderLayout.NORTH);
this.setVisible(true);
}
如上所示,测试的目标只是生成GUI组件。
我想知道的是,我的测试只涵盖第一行super("Title");
。
出于这个原因,我的代码覆盖率大大降低。
我可以在声纳报告中看到这个结果。
为什么我的测试不包括左侧代码?
答案 0 :(得分:0)
有一个例外,在日食中找不到,但在詹金斯中找到。
要解决这个问题,jenkins需要xvnc插件,而vncserver应该安装在服务器上。
实际上,例外是'headlessException',它只在jenkins中找到,而不是eclipse虽然你的测试成功了。
所以,检查unit test success > yourTest.java > show details
。如果您遇到错误,可以在此处看到错误消息。
参考:Java HeadlessException? 这是我的问题和答案。