測試與封裝5.1.5.2

48練麗雲發表於2015-05-07
1.第一階段目標 - 把計算的功能封裝成類。

2.設計測試用例:用白盒與黑盒測試設計技術,為計算核心設計測試用例。
3.在實驗環境中(如MyEclipse整合開發環境+Junit測試框架)執行測試用例,分析測試結果,找出程式問題,給出改進前後的程式碼對照。
結對子:
201306114454 陳汝婷 http://home.cnblogs.com/u/chenruting/
201306114448 練麗雲 http://i.cnblogs.com/EditPosts.aspx?opt=1
  1 //Test.java
  2 import java.awt.event.ActionEvent;
  3 import java.awt.event.ActionListener;
  4 
  5 import javax.swing.JFrame;
  6 
  7 import java.awt.GridLayout;
  8 import java.awt.GridBagLayout;
  9 
 10 import javax.swing.JToolBar;
 11 import javax.swing.JLabel;
 12 
 13 import java.awt.Color;
 14 
 15 import javax.swing.JButton;
 16 
 17 import java.awt.Font;
 18 
 19 
 20 public class Test extends JFrame implements ActionListener{
 21     public JButton bt1;
 22     JLabel lb1;
 23     
 24     public Test() {
 25         getContentPane().setBackground(Color.PINK);
 26         setTitle("\u56DB\u5219\u8FD0\u7B97");
 27         getContentPane().setLayout(null);
 28         setSize(200,200);
 29         
 30          lb1 = new JLabel("\u6B22\u8FCE\u8FDB\u5165\u56DB\u5219\u8FD0\u7B97\u7CFB\u7EDF");
 31         lb1.setForeground(Color.BLUE);
 32         lb1.setBounds(10, 10, 159, 15);
 33         getContentPane().add(lb1);
 34         
 35         bt1 = new JButton("\u5F00\u59CB");
 36         bt1.setBounds(41, 63, 98, 49);
 37         getContentPane().add(bt1);
 38         bt1.addActionListener(this);
 39 //        bt1.addActionListener(new ActionListener() {
 40 //            public void actionPerformed(ActionEvent arg0) {
 41 //                //Test1.main(null);
 42 //                
 43 //            }
 44 //        });
 45         
 46         
 47         setVisible(true);                       //將視窗設定為可視
 48         setResizable(false);
 49         setAlwaysOnTop(true);//設定此視窗永遠為最上方 是window的方法
 50         setLocationRelativeTo(null);  //讓視窗在螢幕的正中間顯示
 51       
 52     }
 53 
 54     
 55     public void actionPerformed(ActionEvent arg0) {
 56         if(arg0.getSource()==bt1){
 57             setVisible(false);
 58             new Test1();
 59             
 60         }
 61     }
 62   
 63 
 64 public static void main(String[] args) {
 65     Test test=new Test();
 66  }
 67 }
 68 //Test1.java
 69 import java.awt.event.ActionEvent;
 70 import java.awt.event.ActionListener;
 71 
 72 import javax.swing.JFrame;
 73 import javax.swing.JButton;
 74 import javax.swing.JLabel;
 75 import javax.swing.JTextField;
 76 
 77 
 78 
 79 
 80 public class Test1 extends JFrame implements ActionListener{
 81     private JTextField T1;
 82     private JTextField T2;
 83     private JTextField T3;
 84     private JTextField T4;
 85     private JLabel l0 ;
 86     private JLabel l1;
 87     private JLabel l2;
 88     private  JLabel label_3;
 89     private JButton button,btnNewButton;
 90     
 91     
 92     public    long x;
 93     public   long y ;
 94 
 95     
 96     public String s;
 97     
 98     
 99     public Test1() {
100         setTitle("SI \u5219\u8FD0\u7B97");
101         getContentPane().setLayout(null);
102         setSize(400,400);
103         btnNewButton = new JButton("\u7EE7\u7EED");
104         btnNewButton.addActionListener(this);
105         btnNewButton.setBounds(130, 239, 93, 23);
106         getContentPane().add(btnNewButton);
107         
108          l0 = new JLabel("\u8BF7\u8F93\u5165\u7B2C\u4E00\u4E2A\u6570\uFF1A");
109         l0.setBounds(38, 64, 131, 15);
110         getContentPane().add(l0);
111         
112          l1 = new JLabel("\u8BF7\u8F93\u5165\u7B2C\u4E8C\u4E2A\u6570\uFF1A");
113         l1.setBounds(38, 89, 131, 15);
114         getContentPane().add(l1);
115         
116          l2 = new JLabel("\u8BF7\u8F93\u5165\u8FD0\u7B97\u7B26\uFF1A");
117         l2.setBounds(38, 114, 131, 15);
118         getContentPane().add(l2);
119         
120         T1 = new JTextField();
121         T1.setBounds(206, 61, 66, 21);
122         getContentPane().add(T1);
123         T1.setColumns(10);
124         T1.addActionListener(this);
125         T2 = new JTextField();
126         T2.setColumns(10);
127         T2.setBounds(206, 86, 66, 21);
128         getContentPane().add(T2);
129         T2.addActionListener(this);
130         T3 = new JTextField();
131         T3.setColumns(10);
132         T3.setBounds(206, 111, 66, 21);
133         getContentPane().add(T3);
134         T3.addActionListener(this);
135         
136          button = new JButton("\u7ED3\u675F");
137         button.addActionListener(this);
138         button.setBounds(264, 239, 93, 23);
139         getContentPane().add(button);
140         
141          label_3 = new JLabel("\u8FD0\u7B97\u7ED3\u679C\uFF1A");
142         label_3.setBounds(38, 139, 131, 15);
143         getContentPane().add(label_3);
144         
145         T4 = new JTextField();
146         T4.setColumns(10);
147         T4.setBounds(206, 142, 66, 21);
148         getContentPane().add(T4);
149         T4.addActionListener(this);
150 this.setVisible(true);
151     }
152 
153     public static void main(String[] args) {
154         new Test1();
155         
156         Test.setDefaultLookAndFeelDecorated(false);
157              
158     }
159 
160 
161     public void actionPerformed(ActionEvent evt) {
162 
163         
164         if(evt.getSource()==T1){  
165             T2.requestFocusInWindow();  
166         }  
167         else if(evt.getSource()==T2){
168             T3.requestFocusInWindow(); 
169         }
170         else if(evt.getSource()==T3){
171             T3.requestFocusInWindow();
172             Core core=new Core();
173             long sign=core.calc(T3.getText(), Long.parseLong(T1.getText()),Long.parseLong(T2.getText()));
174             T4.setText(String.valueOf(sign));
175             
176             }
177         else if(evt.getSource()==btnNewButton)
178         {
179             setVisible(false);
180             new Test1();
181            
182         }
183         else if(evt.getSource()==button)
184         {
185             System.exit(0);
186         }
187         
188         
189     }
190     }
191 //Core.java
192 import java.text.DecimalFormat;
193 import java.util.Scanner;
194 
195 public class Core {
196     
197     static final int NUM_MAX_OPERATOR = 1; // 最多4 個運算子
198     static final int NUM_SCALE = 2; // 數值範圍是 -1000 到 1000
199     static final int NUM_PRECISION = 3; // 精度是小數點後兩位
200     public  static int i=0;
201     public long z;
202     public  double calc(String s) {
203         double result = 0.0d;
204         // 這個方法中我可以計算兩個數的+ - * /
205         return result;
206     }
207     public long add(long x,long y) {
208         
209         return x+y;
210     }
211     public long calc(String s, long x, long y) {
212         
213         Scanner scanner = new Scanner(System.in);
214         if (s.equals("+")) {
215              z=(x+y);
216             System.out.println(z);
217         } else if (s.equals("-")) {
218              z=x-y;
219             System.out.println(z);
220         } else if (s.equals("*")) {
221              z=x*y;
222             System.out.println(z);
223         } else if (s.equals("/")) {
224             if (y != 0) {
225                  z=x/y;
226                 System.out.println(z);
227             } else {
228                 i++;
229                 try{ z=x/y;}
230                 catch(Exception e){
231                 if(i<3)
232                 { 
233                     System.out.println(e+"分母不能為零!");
234                     System.out.print("請重新輸入第二個數:");
235                 
236                     y = scanner.nextLong();
237                       calc(s,x,y);
238                       
239                 }
240                 else{
241                     System.out.println(i);
242                     System.out.println(exit(i=3));
243                 }
244                 }
245             }      
246             }
247                 
248                  
249                   
250             
251         else {
252             System.out.println("輸入異常,不符合要求!");
253         }return z;
254     }
255 
256 public String geta(){
257     return String.valueOf(z);
258 }
259     private char[] exit(int j) {
260         // TODO 自動生成的方法存根
261         return null;
262     }
263     
264 }
265 //CoreTest.java
266 import static org.junit.Assert.*;
267 
268 import org.junit.Test;
269 
270 
271 public class CoreTest {
272 
273     @SuppressWarnings("deprecation")
274     @Test
275 
276     public void test() {
277         Core core = new Core();
278         long d = core.calc("+",12589456L,25364563L);
279         assertEquals(37954019, d);
280     }
281     @Test
282     public void jianfatest() {
283         Core core = new Core();
284         long d = core.calc("-",2,1);
285         assertEquals(1, d);
286     }
287     @Test
288     public void chengfatest() {
289         Core core = new Core();
290         long d = core.calc("*",2,1);
291         assertEquals(2, d);
292     }
293     @Test
294     public void cftest() {
295         Core core = new Core();
296         long d = core.calc("/",6,2);
297         assertEquals(2, d);
298     }
299 }

1.測試步驟及執行結果:

         1)彈出開始框:

               

         2)點選開始後,彈出相應的計算功能框,輸入相應資料,回車輸出結果:

                                                   (1)加法:

      

  

 

 

                         (2)減法

                                      

                        (3)乘法:

                                    

                       (4)除法

                                   

            3)若想再繼續進行計算,則按繼續鍵,則可重新輸入資料進行計算:

                   

              4)若想結束運算,則按結束鍵即可退出視窗,結束程式!

2.單元測試:

 1)加法單元測試:

                                       

                         

 

 

 

 

 

2)減法單元測試:

3)乘法單元測試:

4)除法單元測試:

心得體會:

      一開始換隊友又再結對子,我們是拒絕的。因為兩個人既要分工合作,又來緊密相連,不然做出來的程式碼整合不到一起是沒有用的。

      但是經過幾天的合作,我覺得比上次結對子收穫更大,或許是合作的積極性提高了吧。我曾試過早上6點,就把我的隊友CALL醒,一起出來完善我們未完成好的程式。一開始我們都是不能接受的!但是,我們還是一起乖乖出來談論,一起去測試錯誤,一起去解決問題。相比之前,我覺得我學習的積極性高的,相應的心態也沒有這麼浮躁了。以前我遇到解決不了的問題,都是很煩躁的。現在就一心想靜下來,好好找出解決問題的辦法。我相信這就是團隊合作帶給我的力量和改變了我過往許多不足。雖然我們做的程式不是最好的,但是我們是最用心的。我在這裡也希望大家能得到提高。謝謝!

最後讓大家欣賞下我們團隊照片:花奶隊

 

相關文章