zoukankan      html  css  js  c++  java
  • day02

    1 测试的相关概念
        [1]好的软件不是开发出的  是不断测试出来的

    1.1根据是否知道源代码
        黑盒:
        白盒:
    1.2根据测试的粒度
        方法测试
        单元测试
        集成测试
        系统测试
    1.3根据测试的暴力程度
        压力测试
        冒烟测试
        谷歌工程师给我们提供了一个monkey + 1000 指令可以进行压力测试


    2 单元测试
        [1]定义一个类继承AndroidTestCase
        [2]在清单文件配置uses-library 和 instrumentation
    1. <instrumentation
    2. android:name="android.test.InstrumentationTestRunner"
    3. android:targetPackage="com.phone.unittest"/>
    1. <!-- 配置函数库 -->
    2. <uses-library android:name="android.test.runner"/>
        [3]如果ppt 搞丢了,可以自己手动创建一个Android的测试工程,在测试工程里面都会自动配置好



    3 日志猫的使用
        
    1. Log.v(tag, "我是verbose级别"); ----蓝色
    2. Log.i(tag, "我是info级别");        -----绿色
    3. Log.d(tag, "我是debug级别");       -----黑色
    4. Log.w(tag, "我是warn级别");        -----黄色
    5. Log.e(tag, "我是error级别");       -----红色


    4 login登录案例
        [1]画UI
        
     
        [2]根据我们画的UI写对应的业务逻辑
        
    1. //[2]写按钮的点击事件
    2. public void login(View v)
    3. {
    4. //[2.1]获取用户名和密码
    5. String name = et_name.getText().toString().trim();
    6. String pwd = et_userpassword.getText().toString().trim();
    7. //[2.2]判断name 和 pwd 是否为空
    8. if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd))
    9. {
    10. Toast.makeText(MainActivity.this, "用户或密码不能为空", Toast.LENGTH_LONG).show();
    11. }
    12. else
    13. {
    14. //[2.3]进行登录的逻辑
    15. System.out.println("连接服务器进行登录等我们讲到第四天网络编程再说");
    16. if(cb_ischeck.isChecked())
    17. {
    18. //[2.3.1]把数据保存到SD卡需要先判断一下sd卡状态是否可用
    19. if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
    20. {
    21. //Toast.makeText(MainActivity.this, "sd卡可用", Toast.LENGTH_LONG).show();
    22. //[2.4]把用户名和密码的数据存起来
    23. boolean result = UserInfoUtils.saveInfo(name, pwd);
    24. if(result)
    25. {
    26. Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
    27. }
    28. else
    29. {
    30. Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_LONG).show();
    31. }
    32. }
    33. else
    34. {
    35. Toast.makeText(MainActivity.this, "sd卡不可用", Toast.LENGTH_LONG).show();
    36. }
    37. }
    38. else
    39. {
    40. Toast.makeText(MainActivity.this, "请勾选‘记住用户名密码’", Toast.LENGTH_LONG).show();
    41. }
    42. }
    43. }


    5 使用上下文获取常见目录
        [1] String path = getFilesDir().getPath();
        [2] 使用上下文快速获取文件的输出流和输入流
    1. FileOutputStream fos = context.openFileOutput("info.txt", 0);
    1. FileInputStream fis = context.openFileInput("info.txt");


    6 登录数据存储到sd卡
        [1]获取sd卡的目录
        
    1. String sdpath = Environment.getExternalStorageDirectory().getPath();
        [2]如何判断sd卡状态是否可用
    1. if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){}

    7 获取sd卡可用空间
    1. //[1]找到我们关心的控件
    2. TextView tv_total_size = (TextView) findViewById(R.id.textView2);
    3. TextView tv_useable_size = (TextView) findViewById(R.id.textView1);
    4. //[2]获取sd卡总大小和可用空间
    5. File file = Environment.getExternalStorageDirectory();
    6. //总大小
    7. long totalSpace = file.getTotalSpace();
    8. //可用空间
    9. long usableSpace = file.getUsableSpace();
    10. //[3]转换数据格式
    11. String formatTotalSpace = Formatter.formatFileSize(this, totalSpace);
    12. String formatUseableSpace = Formatter.formatFileSize(this, usableSpace);
    13. //[4]展示到textview上
    14. tv_total_size.setText("总大小:" + formatTotalSpace);
    15. tv_useable_size.setText("可用的:" + formatUseableSpace);

    8 文件权限的介绍

    修改文件的权限 使用linux下一个指令(chmod) 

    9 SharedPreferences介绍(☆)
        [1]获取sp的实例
    1. /**
    2. * name 会帮助我们生成一个xml文件
    3. * mode 模式
    4. */
    5. SharedPreferences sp = getSharedPreferences("config", 0);
        [2]获取编辑器
    1. Editor edit = sp.edit();
        [3]存数据
    1. edit.putString("name", name);
    2. edit.putString("pwd", pwd);
        [4]最后一定要commit
    1. edit.commit();

    10 xml的序列化
        [1]StringBuffer 自己组拼
    1. //[1]创建sb对象
    2. StringBuffer sb = new StringBuffer();
    3. //[2]开始组拼xml文件头
    4. sb.append("<?xml version="1.0" encoding="utf-8"?>");
    5. //[3]开始组拼xml根节点
    6. sb.append("<smss>");
    7. //[4]开始组拼sms节点
    8. for(Sms sms : smsLists)
    9. {
    10. sb.append("<sms>");
    11. //[5]开始组拼address节点
    12. sb.append("<address>");
    13. sb.append(sms.getAddress());
    14. sb.append("</address>");
    15. //[6]开始组拼body节点
    16. sb.append("<body>");
    17. sb.append(sms.getBody());
    18. sb.append("</body>");
    19. //[7]开始组拼date节点
    20. sb.append("<date>");
    21. sb.append(sms.getDate());
    22. sb.append("</date>");
    23. sb.append("</sms>");
    24. }
    25. sb.append("</smss>");
    26. //[8]把数据保存到sd卡中
    27. try {
    28. File file = new File(Environment.getExternalStorageDirectory().getPath(), "smsbackup.xml");
    29. FileOutputStream fos = new FileOutputStream(file);
    30. fos.write(sb.toString().getBytes());
    31. fos.close();
    32. }
    33. catch (Exception e)
    34. {
    35. e.printStackTrace();
    36. }
        [2]使用xmlSerializer 序列化器
            <1>获取xmlSerializer 实例
    1. XmlSerializer serializer = Xml.newSerializer();
            <2>设置xmlSerializer 序列化参数
    1. File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");
    2. FileOutputStream fos = new FileOutputStream(file);
    3. serializer.setOutput(fos, "utf-8");
            <3>开始写xml的文档开头
    1. serializer.startDocument("utf-8", true);
            <4>写xml根节点
    1. serializer.startTag(null, "smss");
            <5>循环写其他结点
    1. for(Sms sms : smsLists)
    2. {
    3. //sms结点开头
    4. serializer.startTag(null, "sms");
    5. //[6]开始address节点
    6. serializer.startTag(null, "address");
    7. serializer.text(sms.getAddress());
    8. serializer.endTag(null, "address");
    9. //[7]开始body节点
    10. serializer.startTag(null, "body");
    11. serializer.text(sms.getBody());
    12. serializer.endTag(null, "body");
    13. //[8]开始date节点
    14. serializer.startTag(null, "date");
    15. serializer.text(sms.getDate());
    16. serializer.endTag(null, "date");
    17. //sms节点结束
    18. serializer.endTag(null, "sms");
    19. }
    20. serializer.endTag(null, "smss");
    21. //文档的结尾
    22. serializer.endDocument();



    11 xml的解析
        [1]xml的数据来源  来源于服务器  服务器的开发人员通过服务器的技术把数据准备一个xml返回给客户端
        [2]对应Android的开发人员  需要做解析的操作  把我们关心的数据取出来就可以了
        [3]服务器是以流的形式把数据返回

    解析步骤
        [1]获取XmlPullParser的实例
    1. XmlPullParser parser = Xml.newPullParser();
        [2]设置XmlPullParser的参数
    1. parser.setInput(in,"utf-8");
        [3]获取解析的文档的事件类型
    1. int eventType = parser.getEventType();
        [4]具体判断一下解析的是哪个便签
    1. //具体判断一下解析到了哪个结点
    2. switch(eventType)
    3. {
    4. //解析开始标签
    5. case XmlPullParser.START_TAG:
    6. //[4]具体判断一下 解析到是哪个开始标签
    7. if("weather".equals(parser.getName()))
    8. {
    9. //[5]创建一个集合对象
    10. weatherLists = new ArrayList<Channel>();
    11. }
    12. else if("channel".equals(parser.getName()))
    13. {
    14. //[6]创建Channel对象
    15. channel = new Channel();
    16. //[7]获取id值
    17. String id = parser.getAttributeValue(0);
    18. channel.setId(id);
    19. }
    20. else if("city".equals(parser.getName()))
    21. {
    22. //[8]获取city的数据
    23. String city = parser.nextText();
    24. channel.setCity(city);
    25. }
    26. else if("temp".equals(parser.getName()))
    27. {
    28. //[9]获取temp的数据
    29. String temp = parser.nextText();
    30. channel.setCity(temp);
    31. }
    32. else if("wind".equals(parser.getName()))
    33. {
    34. //[10]获取wind的数据
    35. String wind = parser.nextText();
    36. channel.setCity(wind);
    37. }
    38. else if("pm250".equals(parser.getName()))
    39. {
    40. //[11]获取pm250的数据
    41. String pm250 = parser.nextText();
    42. channel.setCity(pm250);
    43. }
    44. break;
    45. //解析结束标签
    46. case XmlPullParser.END_TAG:
    47. //判断要解析的结束标签
    48. if("channel".equals(parser.getName()))
    49. {
    50. //把javabean对象存在集合中
    51. weatherLists.add(channel);
    52. }
    53. break;
    54. }


    12 今日总结
        [0]测试的相关概念(了解)
        [1]单元测试(掌握)
            定义一个类继承AndroidTestCast
            在清单文件里配置一个指令集uses-library
        [2]日志猫的使用(了解)
        [3]login案例 练习IO(练习一下就可以了)
        [4]如何获取sd卡的目录  如何判断sd卡状态是否可用(掌握)
            Environment
        [5]文件权限的概念(了解)
        [6]sp的使用(必须的会)
        [7]生成xml的方式
            (1)使用StringBuffer(了解)
            (2)使用xml的序列化器(掌握)
        [8]xml解析(掌握)







    只言片语任我说,提笔句句无需忖。落笔不知寄何人,唯有邀友共斟酌。
  • 相关阅读:
    git处理冲突提交,撤销提交命令
    RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合
    JVM进程的优雅关闭
    MySQL字段等值查询时,尾部有空格也能匹配上的坑
    带有连接池的Http客户端工具类HttpClientUtil
    比较两个jar包的版本号
    源码解读SLF4J绑定日志实现的原理
    log4j输出到控制台的性能问题
    多表查询
    分页优化
  • 原文地址:https://www.cnblogs.com/phonecom/p/99b42404850f34aa0f7b3540a41155d2.html
Copyright © 2011-2022 走看看