亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教一下,自動化測試java怎么鎖定到新打開的窗口?

請教一下,自動化測試java怎么鎖定到新打開的窗口?

隔江千里 2019-11-20 17:15:20
自動化測試java怎么鎖定到新打開的窗口
查看完整描述

3 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

一般的測試,尤其是邏輯處理代碼的測試,JUnit就足夠了。但是一些特殊的測試,譬如需要連接數據庫, 使用瀏覽器,這些測試單單使用JUnit還不能夠很好地完成任務,于是會偷懶的牛人又發明了DbUnit、HTTPUnit這些測試框架,使得重復勞動大大減少。

但是對于界面測試,到現在為止還沒有一個框架能夠使得界面測試完全地自動化起來。

根據馬克思主義哲學原理,這是由事物的內因來決定的。由于界面的復雜性以及界面元素的不確定性,界面的測試只有在它實實在在地呈現在測試人員的眼里時,測試才能得出結果,接著測試才能繼續下去。即使現在已經有了不少界面測試的框架,但是這些所謂的框架還是不能夠稱之為框架,只能稱之為工具,因為使用這些工具仍然得做很多重復的工作,而且能夠自動化測試的程度有限。

下文介紹的是進行界面測試的一種技術,或者說是一種方法,也或者說是一種思想。雖然我在前言部分聲明不談方法和思想,只談技術,但在這里還是得談一下方法和思想,實際上,在界面測試中,技術、思想、方法的概念是挺模糊的。相信不久的將來,當出現一個很牛的框架來進行界面測試時,這幾個概念就會越來越清晰。

先來把被測界面代碼寫出來:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071/************************************************************ * 項目名稱:lhjTest * 文件名稱:CoolUiClass.java * 文件描述:CoolUiClass.java * 作者:Administrator * 創建日期:2007-3-24 * 修改記錄: ***********************************************************/package org.lhj.cool.uiunit;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;/** * @author Administrator */public class CoolUiClass extends JPanel{    private JTextArea msgTxt = new JTextArea(400320);         private JButton coolBtn = new JButton("Cool");         public CoolUiClass()    {        this.setLayout(new GridBagLayout());        this.setMinimumSize(new Dimension(400350));        this.setPreferredSize(new Dimension(400350));                 coolBtn.setMinimumSize(new Dimension(8021));        coolBtn.setPreferredSize(new Dimension(8021));                 JScrollPane scrollPane = new JScrollPane(msgTxt);        scrollPane.setMinimumSize(new Dimension(400320));        scrollPane.setPreferredSize(new Dimension(400320));                 this.add(scrollPane, new GridBagConstraints(00110.00.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5555), 00));        this.add(coolBtn, new GridBagConstraints(01110.00.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5555), 00));                 coolBtn.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent arg0)            {                appendText();            }                     });    }    protected void appendText()    {        msgTxt.append("cool ");    }    /**     * test the calss in main,use your eye to test.     * @param args     */    public static void main(String[] args)    {        JFrame frm = new JFrame("CoolUiClass");        frm.getContentPane().add(new CoolUiClass());        frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        frm.pack();        frm.setVisible(true);    }}


簡單地運行以下main方法,界面如下:

這其實已經在測試界面了,我在main函數里頭寫的就是測試代碼,對于界面顯示的測試,就這幾行代碼就足夠了。你這時候是不是覺得:這也忒容易了,沒什么難度。但我得告訴你,這才是剛剛開始。

界面除了顯示,更復雜的是要進行事件處理,每一個界面控件都有可能是事件源,一個事件得引起一系列的操作,而且是對于界面的操作。這就跟一般的函數的測試相差甚大了,一般來說,函數的測試就是輸入一個參數,然后判斷輸出參數,輸出參數無非就那幾種情況,要么拋異常、要么返回空、要么返回具體值。而界面的事件處理一般會改變很多個控件的顯示,而且控件處于不同的狀態時改變的情況也不一定是一樣的,所以要測試處理是否正確,得判斷多個值,而且得根據控件之前的狀態來判斷當前顯示是否正確??吹竭@,你似乎感覺無從下手了是吧。幸虧,界面測試有其方便性,我們可以直接拿眼睛判斷界面上顯示是否正確了,雖然這樣的測試方法無法保證完全正確,但是卻很高效。在界面測試中,拿眼睛進行判斷比拿機器進行判斷肯定效率要高的多。

如果緊緊是界面邏輯的測試,用眼睛來測(我稱之為目測法)已經足夠了,可以很高效地發現問題。但是如果界面上用到的數據是來自于其它地方(譬如說是后臺),那么在main方法里還不能夠寫出完整的測試代碼。這時候我們就需要一種方法來滿足這種需求,其實下面的方法才是目測法的精髓:將與界面處理邏輯無關的代碼抽出來,例如上面appendText(這里僅僅舉個例子,appendText實際上包含了界面處理邏輯,實際上只需要把非界面處理邏輯代碼抽出來,例如文件操作,訪問后臺,數據庫操作這些情況就應該這樣做)的形式,然后使用繼承的方式,將非界面處理邏輯代碼給替換成自己需要的數據(俗稱假數據),這樣一來,界面處理邏輯代碼就可以得到很好的測試。見以下代碼:

1234567891011121314151617181920212223242526272829303132333435363738394041/************************************************************ * Project Name: lhjTest * File Name   : CoolUiClassETest.java * File Desc   : CoolUiClassETest.java * Author      : Administrator * Create      : 2007-3-24 * Modify: ***********************************************************/package org.lhj.cool.uiunit;import javax.swing.JFrame;import org.lhj.cool.uiunit.CoolUiClass;/** * @author Administrator */public class CoolUiClassETest extends CoolUiClass{    /* (non-Javadoc)     * @see org.lhj.cool.uiunit.CoolUiClass#appendText()     */    @Override    protected void appendText()    {        // call the super method twice        super.appendText();        super.appendText();    }    /**     * test the calss in main,use your eye to test.So this method calls Eye Test.     * the eyt test method's idea is extends the test calss and overrride somemethod so      * that you can expect what you need.     * @param args     */    public static void main(String[] args)    {        JFrame frm = new JFrame("CoolUiClassETest");        frm.getContentPane().add(new CoolUiClassETest());        frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        frm.pack();        frm.setVisible(true);    }}




查看完整回答
反對 回復 2019-11-24
  • 3 回答
  • 0 關注
  • 876 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號