image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2009年3月22日 | トップページ | 2009年3月25日 »

2009年3月23日

2009-03-23

swing アプリの GUI テストを fest-swing で

jruby + swing のアプリのテスト方法をすることを考えた。
java での swing アプリのテスト法を探してみると、fest-swing というものを見つけた。
- http://feather.cocolog-nifty.com/weblog/2009/02/festjava-gui-sw.html
> 雪羽の発火後忘失: FESTを使用してJava GUI (Swing)のテストを実行してみる

まずは簡単な swing アプリを書く。
$ cat NewJFrame.java

// See http://feather.cocolog-nifty.com/weblog/cat7911427/index.html
package festswingexample;

public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();
        jCheckBox1.setSelected(true);
        jCheckBox1.setName("1st");
        jCheckBox2.setName("2nd");
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("ニューフレーム");

        jCheckBox1.setText("チェックボックス");
        jCheckBox2.setText("2nd check");

        java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
        getContentPane().setLayout(layout);
        add(jCheckBox1);
        add(jCheckBox2);
        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    // End of variables declaration//GEN-END:variables
}

テストコードを書く
$ cat NewJFrameTest.java
package festswingexample;

import org.fest.swing.fixture.FrameFixture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class NewJFrameTest {

    private FrameFixture window;

    @Before
    public void setUp() {
        window = new FrameFixture(new NewJFrame());
        window.show(); // shows the frame to test
    }

    @After
    public void tearDown() {
        window.cleanUp();
    }

    @Test
    public void testCheckBoxInit() {
        window.checkBox("1st").requireSelected();
        window.checkBox("2nd").requireNotSelected();
    }

    @Test
    public void testCheckBoxClick() {
        // 1st をクリック
        window.checkBox("1st").click();
        window.checkBox("1st").requireNotSelected();
        window.checkBox("2nd").requireNotSelected();

        // 2nd をクリック
        window.checkBox("2nd").click();
        window.checkBox("1st").requireNotSelected();
        window.checkBox("2nd").requireSelected();
    }
}

2つのチェックボックスの初期値、
それぞれのチェックボックスをクリックした後のチェック状態
のテストができている。

同等のことを jruby でも行えるはず。

junit の代わりに RSpec を使うことになるかな。

« 2009年3月22日 | トップページ | 2009年3月25日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク