1.短信发送器
核心代码
<span style="font-size:18px;">sendbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
number = phone_number_edit.getText().toString();
content = message_content_edit.getText().toString();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number,null,content,null,null);
}
});</span>
其实核心代码跟上次的是一样,不过做这个例子的时候出现了一些小问题,后来才解决了,就是getText()代码一定要写在Onclick方法里,这样才是正确的获取EditText正确值的方法。
2.布局部分没有什么好说的了
3.测试
冒烟测试:adb shell monkey -p <程序的包名> -v <事件的数量>
对程序惊醒一定的压力测试
重点:android程序的单元测试Junit
步骤:(Eclipse)
1.新建一个类继承AndroidTestCase
2.在<manifest>标签里面添加<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="目标包名"/>标签指定(指定测试信息和要测试的包)
3.<uses-library android:name="android.text.runner"/>(指定引用的测试包)
android下单元测试:(Eclipse)(总结) 在AndroidManifest.xml文件中配置一下信息: 在manifest节点下:
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima28.junittest" />
在application节点下配置下面信息:
<uses-library android:name="android.test.runner" />
测试时, 定义一个类继承AndroidTestCase
步骤(AS)
1.测试包中新建测试类继承InstrumentationTestCase类
2.方法以test开始
参考:http://jingyan.baidu.com/article/454316ab7a5711f7a7c03a9a.html
assertEquals断言某个对象就是某个值如(19,result)
注意:在android studio中,所有的测试代码必须以test-作为前缀,不然android studio无法识别它为测试代码
AS断点调试
以下内容转自
好了开始写一个简单的调试程序,我们先来一个for循环
<code class = "language-java hljs " > for ( int i = 0 ; i < 10 ; i++) {
//获取当前i的值
int selector = i;
//打log查看当前i的值(此步多余,实际开发请忽略)
Logger.e( "for当前的i的值:" + i);
//调用方法
stepNext(i);
}</code>
设置断点(点击红点位置添加或取消断点)
点击debug模式运行
查看调试面板
一、简单调试
1. step over:一步步往下走
当前程序运行的位置,我们看到i的值已经在程序代码中展示出来了,黄色的代码处,这个是AS的功能,对于我们调试来讲,这简直是非常大的福利了。
点击单步调试按钮或按快捷键F8,看看效果。这里我们看到selector变量的值已经出来了selector:0,我们在看看黄色位置i的当前值是0。
这时我们继续F8,我们切换到logcat查看日志,我打印出的i的值是0,
我们在切回道Debugger面板,可以看到Variables显示面板中,有i的值是0,selector的值是0。以及我们可以看到Frames控制面板中可以显示出当前程序的位置在:onCreate():28,第28行。
2. step into:看到方法往里走
比如我们的for循环当中调用了一个stepNext(int i)方法,当我们走到这里想看看这个方法里面的运行过程的时候我们可以这样,当走到这个方法的时候我们可以按下F7,或者如下图的图标。
这时就走到了stepNext方法当中。
在这里打印了一个log,我们再按一下F8我们来看看Logcat, 这里我打印的log都是为了做教程用,调试我们就不用打log了直接看显示面板就OK了
3. force step into :所有方法看完整
这个是可以看到你所调用的所有方法的实现会让你跟着它走一遍,研究源码使用非常方便
4. step out :有断点下一个,走完断点继续走
这里如果我们的一个流程当中,包括调用的方法,如果有断点走到下一个断点,如果没有断点,而是在一个调用的方法当中,会跳出这个方法,继续走。
<img alt="这里写图片描述" src="http://www.2cto.com/uploadfile/Collfiles/20150616/20150616083836159.png" title="" http:="" www.2cto.com="" kf="" ware="" vc="" "="" target="_blank" style="border-width: 0px; padding: 0px 0px 4px; margin: 0px; list-style: none; width: 630px; height: 115.915363385465px;">vc/E0aOsvtm49sD919OjujxiciAvPg0KPGltZyBhbHQ9"这里写图片描述" src="http://www.2cto.com/uploadfile/Collfiles/20150616/20150616083836160.png" title="\" />
(上图)我现在程序位置在第一个断点位置(24行),我调用的stepNext方法中也有一个断点,此时我按下step out按钮会走到stepNext中的断点处(39行)我此时如果再按一下step out 会走到stepNext方法的调用出的下一个可执行代码(30行)
(上图)如果我现在程序位置在stepNext的方法中,如果我此时按下step out,会走到stepNext方法的调用出的下一个可执行代码(30行)
5. run to Cursor :下个断点我们见
这里的意思就是说,会很快执行到下一个断点的位置,而且可以静如任何调用的方法
二、高级调试
1. 跨断点调试
如果我们设置了多个断点,现在我们需要直接跳转到下一个断点,那么直接点击下图就可以了
2.观察变量
如果我们想观察1个或者几个变量的值的变化,如果我们在Variables显示面版中观察如果我这里有太多太多的自定义变量和系统变量了,那么就难观察了,我们可以做如下操作: 点击Watches,点击+号,然后输入变量的名称回车就OK了,而且会有历史记录哦
如果变量名比较长我们可以这样: 选择[Variables]中的变量名然后点击[右键],选择[Add to Watches],然后Watches面板中就有了
3.设置变量的值
在程序中有很多的条件语句和循环语句,调试也是比较耗时的,我们可以通过快速设置变量的值来加快调试速度,我们可以做如下操作: 选择[Variables]中的变量名然后点击[右键],选择[Set Value..]或者选择之后直接F2(如上图)(下图为Variables面板)
4.查看断点
点击之后我们可以看到所有的断点,以及位置代码,也可以设置一些属性
5.停止调试
要注意的是这里的[停止调试]不是让程序停止,而是跳过所有调试到这里我们的Android Studio的断点调试和高级调试就完毕了。
InstrumentationTestCase 类和AndroidTestCase 类区别?