Creo que realizar pruebas es una buena práctica en cualquier desarrollo de Software. Comunmente, todo desarrollador realiza sus pruebas de manera aislada y siguiendo su propia metedología (por lo menos la mayoría que conozco).
Soy nuevo en este terreno de las pruebas, pero visualizo indispensable realizar una bateria de Pruebas Unitarias conforme se vayan desarrollando los diversos módulos del proyecto. Para esto, y en caso especifico de Java con componentes Swing, recomiendo utilizar la siguiente librería:
assertj-swing-junit
La última versión de la librería (a la fecha de publicación de este artículo) es la 3.2.0, la cual funciona con la JVM 8. Pero si quieren trabajar con la versión 7, pueden descargar la versión 2.2.0
Un ejemplo básico sería:
public class SimpleFrame extends JFrame{ public SimpleFrame(){ final JLabel label = new JLabel("Test v1"); label.setName("Label1"); this.getContentPane().add(label, BorderLayout.NORTH); final JTextField text = new JTextField(""); text.setName("Text1"); this.getContentPane().add(text, BorderLayout.CENTER); JButton button = new JButton("Ok"); button.setName("ButtonOk"); button.addMouseListener(new MouseListener() { @Override public void mouseClicked(MouseEvent e) { label.setText(text.getText()); } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } }); this.getContentPane().add(button, BorderLayout.SOUTH); //this.pack(); //this.setSize(800, 600); //this.setVisible(true); } public static void main(String[] args){ new SimpleFrame(); } } |
La prueba quedaría así:
public class SimpleFrameTest { private FrameFixture window; @BeforeClass public static void setUpOnce() { FailOnThreadViolationRepaintManager.install(); } @Before public void setUp() { SimpleFrame frame = GuiActionRunner.execute(new GuiQuery<SimpleFrame>() { @Override protected SimpleFrame executeInEDT() throws Throwable { return new SimpleFrame(); } }); window = new FrameFixture(frame); window.show(); // shows the frame to test } @Test public void shouldCopyTextInLabelWhenClickingButton() { window.textBox("Text1").enterText("Some random text"); window.button("ButtonOk").click(); window.label("Label1").requireText("Some random text"); } @After public void tearDown() { window.cleanUp(); } } |
Referencias:
http://joel-costigliola.github.io/assertj/assertj-swing-quick-start.html
http://mvnrepository.com/artifact/org.assertj/assertj-swing-junit