测试与封装5.1.5.2

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醒,一起出来完善我们未完成好的程序。一开始我们都是不能接受的!但是,我们还是一起乖乖出来谈论,一起去测试错误,一起去解决问题。相比之前,我觉得我学习的积极性高的,相应的心态也没有这么浮躁了。以前我遇到解决不了的问题,都是很烦躁的。现在就一心想静下来,好好找出解决问题的办法。我相信这就是团队合作带给我的力量和改变了我过往许多不足。虽然我们做的程序不是最好的,但是我们是最用心的。我在这里也希望大家能得到提高。谢谢!

最后让大家欣赏下我们团队照片:花奶队

 

posted @ 2015-05-07 11:41  48练丽云  阅读(219)  评论(1编辑  收藏  举报