在正式进行Android测试驱动开发之前,不得不先提一下Android应用架构问题。在传统软件开发中,mvc架构得到了广泛的应用,然而在Android开发中,很少见应用
在正式进行Android测试驱动开发之前,不得不先提一下Android应用架构问题。在传统软件开发中,mvc架构得到了广泛的应用,然而在Android开发中,很少见应用采用了MVC架构(不要说Android及Widget全部采用的是MVC架构,那是系统的事,我们讲的是应用程序开发),究其原因可能是初期Android应用大多较为简单,没有采用的必要,而后期一直在沿用初期的习惯。但是遇到一些复杂的应用,例如同样的数据在多个Activity中显示,如果数据分散在多个Activity中,那么数据发生更新,很有可能出现数据不一致的情况,尤其是Android应用为节省带宽大量使用缓存的情况下,这种情况更加突出。我所经历的项目中,大部分项目都或多或少存在这个问题。因此,采用MVC架构开发Android应用程序也许是一个值得尝试的方法。所以,在这里我们也会采用MVC架构来做应用程序的开发,虽然我们的架构未必在理论上很完备,也不一定能解决实际应用中的所有问题,但是采用MVC架构的的确确可以提高程序的质量,同时也会使程序的可测试性大大增强。 言归正传,我们现在开测试驱动开发。 首先建立一个Android工程,例如wkj,然后建立一个Android测试工程如WkjTest,这样构成了一个Android测试开发的起点,下面让我们正式开始Android测试驱动开发吧! 我们开始编写第一个测试用例,由于是空工程,我们首先要测试的是MainActivity正确显示出AppModel所提供的应用名称-维康街。什么?Android创建的工程显示的是Hello World,怎么会是维康街?而且AppModel是个什么东西?细心的读者的这些问题没错,这是测试驱动开发的工作模式:先写出失败的测试程序,然后再通过编程来通过这些测试用例。 打开WkjTest工作,创建新类MainActivityTest,并指定该类继承自android.test.ActivityInstrumentationTestCase2,代码如下所示:
package com.bjcic.wkj.test; import com.bjcic.wkj.MainActivity; import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import android.widget.TextView; public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { public MainActivityTest() { super(MainActivity.class); } @Override protected void setUp() throws Exception { super.setUp(); setActivityInitialTouchMode(false); activity = getActivity(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testTemp001() { titleTxtv = (TextView)activity.findViewById(com.bjcic.wkj.R.id.j_titleTxtv); assertEquals(activity.getString(com.bjcic.wkj.R.string.welcome_msg), titleTxtv.getText()); } private Activity activity = null; private TextView titleTxtv = null; } |
package com.bjcic.wkj; import android.app.Application; public class AppModel extends Application { // 生命周期方法开始 public void onCreate() { super.onCreate(); welcomeMsg = getString(R.string.welcome_msg); } public void onTerminate() { super.onTerminate(); } // 生命周期方法结束 private String welcomeMsg = null; public String getWelcomeMsg() { return welcomeMsg; } public void setWelcomeMsg(String welcomeMsg) { this.welcomeMsg = welcomeMsg; } } 在MainActivity中添加如下代码: [java] view plaincopy @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); appModel = (AppModel)getApplication(); } @Override public void onResume() { super.onResume(); ((TextView)findViewById(R.id.j_titleTxtv)).setText(appModel.getWelcomeMsg()); } private AppModel appModel = null; |
<application android:allowBackup="true" android:name=".AppModel" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > |
--结束END--
本文标题: Android测试驱动开发实践1
本文链接: https://www.lsjlt.com/news/28754.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0