zoukankan      html  css  js  c++  java
  • 测试与封装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("u56DBu5219u8FD0u7B97");
     27         getContentPane().setLayout(null);
     28         setSize(200,200);
     29         
     30          lb1 = new JLabel("u6B22u8FCEu8FDBu5165u56DBu5219u8FD0u7B97u7CFBu7EDF");
     31         lb1.setForeground(Color.BLUE);
     32         lb1.setBounds(10, 10, 159, 15);
     33         getContentPane().add(lb1);
     34         
     35         bt1 = new JButton("u5F00u59CB");
     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 u5219u8FD0u7B97");
    101         getContentPane().setLayout(null);
    102         setSize(400,400);
    103         btnNewButton = new JButton("u7EE7u7EED");
    104         btnNewButton.addActionListener(this);
    105         btnNewButton.setBounds(130, 239, 93, 23);
    106         getContentPane().add(btnNewButton);
    107         
    108          l0 = new JLabel("u8BF7u8F93u5165u7B2Cu4E00u4E2Au6570uFF1A");
    109         l0.setBounds(38, 64, 131, 15);
    110         getContentPane().add(l0);
    111         
    112          l1 = new JLabel("u8BF7u8F93u5165u7B2Cu4E8Cu4E2Au6570uFF1A");
    113         l1.setBounds(38, 89, 131, 15);
    114         getContentPane().add(l1);
    115         
    116          l2 = new JLabel("u8BF7u8F93u5165u8FD0u7B97u7B26uFF1A");
    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("u7ED3u675F");
    137         button.addActionListener(this);
    138         button.setBounds(264, 239, 93, 23);
    139         getContentPane().add(button);
    140         
    141          label_3 = new JLabel("u8FD0u7B97u7ED3u679CuFF1A");
    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醒,一起出来完善我们未完成好的程序。一开始我们都是不能接受的!但是,我们还是一起乖乖出来谈论,一起去测试错误,一起去解决问题。相比之前,我觉得我学习的积极性高的,相应的心态也没有这么浮躁了。以前我遇到解决不了的问题,都是很烦躁的。现在就一心想静下来,好好找出解决问题的办法。我相信这就是团队合作带给我的力量和改变了我过往许多不足。虽然我们做的程序不是最好的,但是我们是最用心的。我在这里也希望大家能得到提高。谢谢!

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

  • 相关阅读:
    2017年计划安排
    Angular企业级开发(4)-ngResource和REST介绍
    Angular企业级开发(3)-Angular MVC实现
    Angular企业级开发(2)-搭建Angular开发环境
    Angular企业级开发(1)-AngularJS简介
    复习下C 链表操作(双向链表)
    复习下C 链表操作(单向循环链表、查找循环节点)
    复习下C 链表操作(单向链表)
    隐藏状态栏
    关于CALayer 中的contents(图片) 拉伸
  • 原文地址:https://www.cnblogs.com/Lianliyun/p/4484375.html
Copyright © 2011-2022 走看看