一、 软件的测试分类
1. 白盒测试
2. 黑盒测试
根据测试的粒度不同分类,
单元测试 unit test 测试一个简单的方法 想想,如何测试呢?需要在Manifest配置中加入知识。
功能测试 functiontest 测试一个功能
集成测试 intergragetion test
压力测试 pressure test
冒烟测试 smoke test N次点击相同的按钮,就是短期内重复调用某一个方法。
要对应用进行单元测试需要在AndroidManifest.xml文件中进行配置,
第一步在<application>下加入 <uses-libraryandroid:name="android.test.runner" />
第二步在<manifest>标签下加入
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.itcast.action" />
测试的方法:新建一个类继承.AndroidTestCase 这个父类,然后就可以写测试的方法
写代码需要注意的问题
1 命名规范,以类型开头_功能,例如EditText下有个name那么久是et_name
2 相对布局如何用?</RelativeLayout>这个标签标起来,就能使得两个选择项在一个水平线上
4 如何设置滚动下滑条?<ScrollView>这标签包围起来就能使N个选项在一个屏幕内
4 如何设置字体大小?用textSize=12sp 这个可以设置
5如何设置一个按钮在什么地方?用layout属性可以设置上下左右。
6如何得到自己设定的按钮呢?findViewById(刚才自己设置的ID);这个会强转,得到按钮是第一步
7得到按钮之后要干嘛呢?点击啊,点击事件用button.setOnClickListener(this)方法,然activity实现接口
8.有个文本的工具集TextUtils.isEmpty()方法,可以用来判断传入的name是否为空
9、Toast.makeText(contxt当前对象this,String提示字符,时间,可以是0).show();一定不要忘记了show 这个方法
10、如何得到当前运用的路径?利用全局对象Context.getFileDir();
11 安卓中尽量用静态的方法
二、数据存储
安卓上的存储空间 ram,手机的内存,动态的。手机运行的时候才有效,如果手机关机或者没电了,ram的数据会丢失。256M~1G,速度加载的访问比较快。
Rom空间,手机上的微硬盘。512M~8G即使手机断电,数据还能保持在手机上 而不丢失,
SD卡,外接的存储设备。存放在mnt 的sdcard上。断电不丢数据。
模拟QQ登陆1。5个小时
保存密码的方法 saveToRom(String filename,String username,String password)
读取文件对象中的密码
能用静态的方法用静态方法,google推荐
三、回显数据
用了两个方法,一个是把读取流转成字节数组
public static byte[] getBytes(InputStreamis) throwsException{
ByteArrayOutputStreambos=newByteArrayOutputStream();
byte [] buffer=new byte[1024];
int len=0;
while((len=is.read(buffer))!=-1){
bos.write(buffer,0,len);
}
is.close();
return bos.toByteArray();
一个是从rom中读取的方法
public static Map<String,String> readfromRom(Contextcontext,String filename) throws Exception{
File file=newFile(context.getFilesDir(),filename);
FileInputStreamfis=new FileInputStream(file);
byte [] result=StreamTools.getBytes(fis);
String []infos=new String(result).split(",");
Map<String,String>loginInfo=new HashMap<String, String>();
loginInfo.put("name", infos[0]);
loginInfo.put("password", infos[1]);
return loginInfo;
}
最后一步是在Activity中设置name和passWord的值,从读取到的集合中取出来给他们
四、LogCat使用
Log.i(tag,mes) info 这个tag是当前的类的名称,这个mes是你想指定的信息
Log.e error .log.v=verbose log.w=warn/log.d debug
Erro>warn>info>debug>verbose
五、保存文件到缓存目录,到ROM,到SD卡的方法
保存到SD上的目录上时候保存的路径保存为这个:Environment.getExternalStorageDirectory();
存之前需要判断是否已经加载if(Enviroment.MEDID_MOUNTED.equals(:Environment.getExternalStorageDirectory();))存储否则 Toast.getText().show()
Context.openFileOutput(name,mode);这个方法能直接创建出一个文件来,name就是要创建的文件名称,mode就是文件的类型,可读可写,还是都能常用的几个mode context.MODE_WORLD_READABLE
想放到缓存目录下的话,要用congtext.getCaacheDir()
默认情况下,自己要写入或则读取到SD卡上或则当地目录下,是需要权限的。各自的运用程序是不可以相互访问的
六、文件访问权限 重点
默认情况下, A应用程序是不可以访问B应用程序目录下的数据的.
如果A应用程序创建一个文件指定的模式是 readable 这个文件只可以被别的应用程序(B) 读取.
如果A应用程序创建一个文件指定的模式是 writeable 这个文件只可以被别的应用程序(B) 写入.
如果A应用程序创建一个文件指定的模式是 readable+ writeable 这个文件只可以被别的应用程序(B) 读写.
如果A应用程序创建一个文件指定的模式是 append 这个文件是私有的,只能被自己的应用程序操作.
append.txt -rw-rw----
available -rw-rw-rw-
info.txt 默认 -rw-------
readable -rw-rw-r--
writeable -rw-rw--w-
110110010
linux 系统下的文件访问模式
第一个占位符: 代表的是文件的类型. - 文件 d 目录
前三个占位符: 代表的是文件所属的用户. r 可读 w 可写 x 可执行.
中间三个占位符: 代表的用户所在的组. 代表自己所在运用程序
最后三个占位符: 代表的所有人其他人,代表其他运用程序
chmod:change mode
七、sharedpreference的使用
存储Andriod上的各种数据,通过在运用的包的名称下创建一个文件,Andriod系统给我们提供了一个API,这个api能存放基本的数据类型,
SharedPreferences sp=getSharedPreferences(“config”,MODE_PRIVATE);cogfig为文件的名称,第二个参数为数据类型
得到一个SharedPreferences编辑器 Editor editor=sp.edit();
Editor.putBoolean()可以存放各种数据,存放之后一定要用editor.commit方法提交
Sharedpreference的内部是一个MAP一样的文件数据类型
八、利用pull解析XML文件
这个XML文件的解析应该是以后工作中的重点内容,需要好好学习下,如何建立与解析
有一个Xml对象有一个newSerializer()的方法
Pull解析类似sax解析的事件解析,
首先要获得一个解析器:XmlPullParaser parser=Xml.newPullParser();
设置读取的方式:parser.setInput(InputStream,”UTF-8”);InputStream是传入进来的文件
XmlPullParser.START_DOCUMENT 文档开始开头
XmlPullParser.END_DOCUMENT 文档结束
解析时候,定义int type=parser.getEvenType();//读取事件的类型
Parser.getAttributeValue(0)这个是读取标签的属性的,第一个属性从0开始
九、数据库的增删改查
在安卓的数据库中,不要加载驱动,不需要连接数据库,数据库就在本运用下,也没有其他类型,只有String类型。所以简化了操作
获取数据是一个游标工厂得到的
SQLiteOpenHelper 构造方法
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
context相当于全局的对象,name其实就是数据库的名称my.db,factory可以是null表示默认的。Version版本号,是从1开始的如果你想改变数据库,则这个Version必须增加。只有当执行读取或者写入的方法时候,数据库才真正的会被创建或者开启。用的时候才创建
第一次创建的时候用 OnCreate(dbname)
更新的时候用OnUpgreade(SQLiteDatabase db, int oldVersion, int newVersion