为什么我的单元测试不包括gui组件生成代码?

时间:2015-06-01 11:25:08

标签: java unit-testing junit gui-testing

我正在尝试对生成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");

出于这个原因,我的代码覆盖率大大降低。

我可以在声纳报告中看到这个结果。

为什么我的测试不包括左侧代码?

1 个答案:

答案 0 :(得分:0)

有一个例外,在日食中找不到,但在詹金斯中找到。

要解决这个问题,jenkins需要xvnc插件,而vncserver应该安装在服务器上。

实际上,例外是'headlessException',它只在jenkins中找到,而不是eclipse虽然你的测试成功了。

所以,检查unit test success > yourTest.java > show details。如果您遇到错误,可以在此处看到错误消息。

参考:Java HeadlessException? 这是我的问题和答案。