为什么我的单元测试没有覆盖 gui 组件生成代码?
Why my unit test doesn't cover gui component generation code?
我正在尝试对生成 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");
。
因此,我的代码覆盖率降低了很多。
我可以在声纳报告中看到这个结果。
为什么我的测试没有覆盖左边的代码?
出现了异常,在eclipse中没有发现,在jenkins中发现
为了解决这个问题,jenkins 中需要 xvnc 插件,服务器中需要安装 vncserver。
实际上,异常是 'headlessException',它只在 jenkins 中发现,尽管您的测试成功,但没有在 eclipse 中发现。
所以,检查 unit test success > yourTest.java > show details
。如果您有我遇到的错误,您可以在此处查看错误消息。
参考:
这是我的问答。
我正在尝试对生成 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");
。
因此,我的代码覆盖率降低了很多。
我可以在声纳报告中看到这个结果。
为什么我的测试没有覆盖左边的代码?
出现了异常,在eclipse中没有发现,在jenkins中发现
为了解决这个问题,jenkins 中需要 xvnc 插件,服务器中需要安装 vncserver。
实际上,异常是 'headlessException',它只在 jenkins 中发现,尽管您的测试成功,但没有在 eclipse 中发现。
所以,检查 unit test success > yourTest.java > show details
。如果您有我遇到的错误,您可以在此处查看错误消息。
参考: