0
我想驗證一個特定字段是必需的(isbnTextField)。我想確保我先寫一個測試來遵循敏捷開發的原則。但是,我在我的測試testThatBookNumberIsRequired
中收到空指針異常。爲什麼不找到這個textField?Java - 驗證空字段
編輯:
public class BookOrderingGUI extends JFrame {
private JTextField isbnTextField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BookOrderingGUI window = new BookOrderingGUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public BookOrderingGUI() {
initialize();
}
public void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 600, 450);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBounds(0, 0, 584, 412);
frame.getContentPane().add(tabbedPane);
JPanel panelOrders = new JPanel();
tabbedPane.addTab("Orders", null, panelOrders, null);
panelOrders.setLayout(null);
isbnTextField = new JTextField();
isbnTextField.setBounds(80, 8, 86, 20);
panelOrders.add(isbnTextField);
isbnTextField.setColumns(10);
}
}
測試
public class TestBookOrdering extends TestCase {
private BookOrderingGUI window;
@Before
public void setUp() {
this.window = new BookOrderingGUI();
this.window.setVisible(true);
}
@Test
public void testThatBookNumberIsRequired() {
JTextField target = (JTextField) this.window.getComponentAt(80, 8);
target.setText(null);
target.postActionEvent();
assertFalse(target.getText().isEmpty());
}
}
我只是將文本字段包設置爲private,並直接從測試中訪問它。這更容易,也更不容易出錯。如果以後出現問題(爲什麼會這樣?),您總是可以選擇複雜的選項。 – assylias
所以你說讓'''target'''私有類似於我有'''window'''?我仍然得到一個空指針異常。 @assylias – theGrayFox
我添加了一些更多的代碼@assylias我認爲這可能是與處理窗格的字段存儲在。 – theGrayFox