《测试驱动开发-实用指南》第八章的TestWidgets,用基于-swt编程, 下面看代码: import org.easymock.MockControl; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; 
import junit.framework.TestCase; /*  * 创建日期 2004-10-20  *  * TODO 要更改此生成的文件的模板,请转至  * 窗口 - 首选项 - Java - 代码样式 - 代码模板  */ 
/**  * @author Administrator  *  * TODO 要更改此生成的类型注释的模板,请转至  * 窗口 - 首选项 - Java - 代码样式 - 代码模板  */ public class TestSWTWidgets extends TestCase {  private MockControl control=null;  private MovieListEditor mockEditor=null;  private SWTMovieListEditorView editorView=null; 
 public static void main(String[] args) {   junit.textui.TestRunner.run(TestSWTWidgets.class);  } 
 /*   * @see TestCase#setUp()   */  protected void setUp() throws Exception {   super.setUp();   control=MockControl.createControl(MovieListEditor.class);   mockEditor=(MovieListEditor) control.getMock();   control.replay();   editorView=new SWTMovieListEditorView(mockEditor);   editorView.show();  } 
   /*   * @see TestCase#tearDown()   */  protected void tearDown() throws Exception {   super.tearDown();  }    public void testList() {   List movieList=editorView.getMovieList();   assertNotNull("Movie list should be non null",movieList);   assertTrue("Movie list shoud be showing",movieList.isVisible());     }    public void testField() {   Text movieField=editorView.getMovieField();   assertNotNull("Movie field should be non null",movieField);   assertTrue("Movie field should be showing",movieField.isVisible());  }    public void testAddButton() {   Button addButton=editorView.getAddButton();   assertNotNull("Movie addButton should be non null",addButton);   assertTrue("Movie addButton should be showing",addButton.isVisible());   assertEquals("Add button should be label","Add",addButton.getText());    } 
 public void  testDeleteButton() {   Button deleteButton=editorView.getDeleteButton();   assertNotNull("Movie deleteButton should be non null",deleteButton);   assertTrue("Movie deleteButton should be showing",deleteButton.isVisible());   assertEquals("Delete button should be label","Add",deleteButton.getText());  } }
  下面是实际生成的swt-gui: import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; 
/*  * 创建日期 2004-10-20  *  * TODO 要更改此生成的文件的模板,请转至  * 窗口 - 首选项 - Java - 代码样式 - 代码模板  */ 
/**  * @author Administrator  *  * TODO 要更改此生成的类型注释的模板,请转至  * 窗口 - 首选项 - Java - 代码样式 - 代码模板  */ public class SWTMovieListEditorView { 
 private org.eclipse.swt.widgets.Shell sShell = null;  private List list=null;  private Button addButton=null;  private Button deleteButton=null;  private Text movieField=null;  private MovieListEditor listEditor=null; 
 /**   * @param mockEditor   */  public SWTMovieListEditorView(MovieListEditor anEditor) {      listEditor=anEditor;  } 
 /**   * This method initializes sShell   */  private void createSShell() {   sShell = new org.eclipse.swt.widgets.Shell();        addButton = new Button(sShell, SWT.NONE);   deleteButton = new Button(sShell, SWT.NONE);   movieField = new Text(sShell, SWT.NONE);   sShell.setSize(new org.eclipse.swt.graphics.Point(300,200));   sShell.setText("Shell");           addButton.setBounds(new org.eclipse.swt.graphics.Rectangle(55,124,71,16));   addButton.setText("add");   deleteButton.setBounds(new org.eclipse.swt.graphics.Rectangle(143,125,85,16));   deleteButton.setText("delete");   movieField.setBounds(new org.eclipse.swt.graphics.Rectangle(55,50,164,39)); 
 } 
  
 /**   *    */  public void show() {   this.createSShell();     } 
 /**   * @return   */  public List getMovieList() {   // TODO 自动生成方法存根   return null;  } 
 /**   * @return   */  public Text getMovieField() {   // TODO 自动生成方法存根   return movieField;  } 
 /**   * @return   */  public Button getAddButton() {   // TODO 自动生成方法存根   return addButton;  } 
 /**   * @return   */  public Button getDeleteButton() {   // TODO 自动生成方法存根   return deleteButton;  } }  
 
  |