2015-06-01 4 views
0

Я пытаюсь выполнить единичный тест для кода, который генерирует компоненты GUI.Почему мой модульный тест не распространяется на код генерации кода 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

Было исключение, которое не было обнаружено в затмении, но найдено у дженкинсов.

Чтобы решить эту проблему, в jenkins необходим плагин xvnc, а vncserver должен быть установлен на сервере.

На самом деле исключением было «исключение без головы», и оно было найдено только у дженкинсов, а не затмение, хотя ваш тест прошел успешно.

так, проверьте unit test success > yourTest.java > show details. Если у вас есть ошибка, что у меня было, вы можете увидеть здесь сообщение об ошибке.

ссылка: Java HeadlessException? это мой вопрос и ответ.