单元测试;Android应用程序架构;电话拔号器;短信发送器

单元测试 

当我们编写完业务bean,一定要对bean单元测试。

 

第一步:首先在AndroidManifest.xml中加入下面红色代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="cn.itcast.action“ android:versionCode="1“  android:versionname="1.0">

 <application android:icon="@drawable/icon" android:label="@string/app_name">

        <uses-library android:name="android.test.runner" />

        ....

 </application>

 <uses-sdk android:minSdkVersion="6" />

 <instrumentation android:name="android.test.InstrumentationTestRunner"

  android:targetPackage="cn.itcast.action" android:label="Tests for My App" />

</manifest>

上面targetPackage指定的包要和应用的package相同。

第二步:编写单元测试代码(选择要测试的方法,右键点击“Run As”--“Android Junit Test” ):

测试类需要继承 AndroidTestCase

 

import android.test.AndroidTestCase;

import android.util.Log;

public class XMLTest extends AndroidTestCase {

          public void testSomething() throws Throwable {

                   Assert.assertTrue(1 + 1 == 3);

          }

测试类要继承AndroidTestCase

在测试的时候,当有异常不要用tryCath捕获而要抛出异常。

 

 

Android应用程序架构

 

src/  java原代码存放目录

gen/ 自动生成目录

gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

res/ 资源(Resource)目录

在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。

AndroidManifest.xml 功能清单文件

 这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。

default.properties 项目环境信息,一般是不需要修改此文件

电话拔号器

因为应用要使用手机的电话服务,所以要在清单文件AndroidManifest.xml中添加电话服务权限:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.action" android:versionCode="1" android:versionname="1.0"> 略.... <uses-sdk android:minSdkVersion=“6" /> <uses-permission android:name="android.permission.CALL_PHONE"/> </manifest>

  

 

界面布局:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/inputmobile"/> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/mobile"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button"/> </LinearLayout>

 

 

 

Activity:

public class DialerAction extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { EditText editText = (EditText)findViewById(R.id.mobile); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ editText.getText())); DialerAction.this.startActivity(intent); } }); } }

 

 

 

 

短信发送器

因为应用要使用手机的短信服务,所以要在清单文件AndroidManifest.xml中添加短信服务权限:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.sms" android:versionCode="1" android:versionname="1.0"> 略.... <uses-sdk android:minSdkVersion=“4" /> <uses-permission android:name="android.permission.SEND_SMS"/> </manifest>

 

 

界面布局:

 

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical“ android:layout_width="fill_parent“ android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/inputmobile"/> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/mobile"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/content"/> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLines="3" android:id="@+id/content"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:id="@+id/button"/> </LinearLayout>

 

 

Activity主要代码:

String mobile = mobileView.getText().toString(); String content = contentView.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new Intent(), 0); if(content.length()>70){//如果字数超过70,需拆分成多条短信发送 List<String> msgs = smsManager.divideMessage(content); for(String msg : msgs){ smsManager.sendTextMessage(mobile, null, msg, sentIntent, null); //最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图 } }else{ smsManager.sendTextMessage(mobile, null, content, sentIntent, null); } Toast.makeText(SMSSender.this, "短信发送完成", Toast.LENGTH_LONG).show();

 

 

 

相关推荐