我们曾经和大家探讨过全面剖析Java ME单元测试理念,其实在Android上实现JUnit单元测试也不是很困难,主要是在配置文件和测试环境上将花费很长时间,下面从四步简单讲一下在Android上实现Junit单元测试。

庆阳ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
第一步:新建一个TestCase,记得要继承androidTestCase,才能有getContext()来获取当前的上下文变量,这在Android测试中很重要的,因为很多的Android api都需要context。
Java代码
- public class TestMath extends AndroidTestCase {
 - private int i1;
 - private int i2;
 - static final String LOG_TAG = "MathTest";
 - @Override
 - protected void setUp() throws Exception {
 - i1 = 2;
 - i2 = 3;
 - }
 - public void testAdd() {
 - assertTrue("testAdd failed", ((i1 + i2) == 5));
 - }
 - public void testDec() {
 - assertTrue("testDec failed", ((i2 - i1) == 1));
 - }
 - @Override
 - protected void tearDown() throws Exception {
 - super.tearDown();
 - }
 - @Override
 - public void testAndroidTestCaseSetupProperly() {
 - super.testAndroidTestCaseSetupProperly();
 - //Log.d( LOG_TAG, "testAndroidTestCaseSetupProperly" );
 - }
 - }
 
第二步:新建一个TestSuit,这个就继承Junit的TestSuite就可以了,注意这里是用的addTestSuite方法,一开始使用addTest方法就是不能成功。
Java代码
- public class ExampleSuite extends TestSuite {
 - public ExampleSuite() {
 - addTestSuite(TestMath.class);
 - }
 - }
 
第三步:新建一个Activity,用来启动单元测试,并显示测试结果。系统的AndroidTestRunner竟然什么连个UI界面也没有实现,这里只是最简单的实现了一个
Java代码
- public class TestActivity extends Activity {
 - private TextView resultView;
 - private TextView barView;
 - private TextView messageView;
 - private Thread testRunnerThread;
 - private static final int SHOW_RESULT = 0;
 - private static final int ERROR_FIND = 1;
 - @Override
 - protected void onCreate(Bundle savedInstanceState) {
 - super.onCreate(savedInstanceState);
 - setContentView(R.layout.main);
 - resultView = (TextView)findViewById(R.id.ResultView);
 - barView = (TextView)findViewById(R.id.BarView);
 - messageView = (TextView)findViewById(R.id.MessageView);
 - Button lunch = (Button)findViewById(R.id.LunchButton);
 - lunch.setOnClickListener(new View.OnClickListener() {
 - @Override
 - public void onClick(View v) {
 - startTest();
 - }
 - });
 - }
 - private void showMessage(String message) {
 - hander.sendMessage(hander.obtainMessage(ERROR_FIND, message));
 - }
 - private void showResult(String text) {
 - hander.sendMessage(hander.obtainMessage(SHOW_RESULT, text));
 - }
 - private synchronized void startTest() {
 - if (testRunnerThread != null
 - && testRunnerThread.isAlive()) {
 - testRunnerThread = null;
 - }
 - if (testRunnerThread == null) {
 - testRunnerThread = new Thread(new TestRunner(this));
 - testRunnerThread.start();
 - } else {
 - Toast.makeText(this,
 - "Test is still running",
 - Toast.LENGTH_SHORT).show();
 - }
 - }
 - public Handler hander = new Handler() {
 - public void handleMessage(Message msg) {
 - switch (msg.what) {
 - case SHOW_RESULT:
 - resultView.setText(msg.obj.toString());
 - break;
 - case ERROR_FIND:
 - messageView.append(msg.obj.toString());
 - barView.setBackgroundColor(Color.RED);
 - break;
 - default:
 - break;
 - }
 - }
 - };
 - class TestRunner implements Runnable, TestListener {
 - private Activity parentActivity;
 - private int testCount;
 - private int errorCount;
 - private int failureCount;
 - public TestRunner(Activity parentActivity) {
 - this.parentActivity = parentActivity;
 - }
 - @Override
 - public void run() {
 - testCount = 0;
 - errorCount = 0;
 - failureCount = 0;
 - ExampleSuite suite = new ExampleSuite();
 - AndroidTestRunner testRunner = new AndroidTestRunner();
 - testRunner.setTest(suite);
 - testRunner.addTestListener(this);
 - testRunner.setContext(parentActivity);
 - testRunner.runTest();
 - }
 - @Override
 - public void addError(Test test, Throwable t) {
 - errorCount++;
 - showMessage(t.getMessage() + "\n");
 - }
 - @Override
 - public void addFailure(Test test, AssertionFailedError t) {
 - failureCount++;
 - showMessage(t.getMessage() + "\n");
 - }
 - @Override
 - public void endTest(Test test) {
 - showResult(getResult());
 - }
 - @Override
 - public void startTest(Test test) {
 - testCount++;
 - }
 - private String getResult() {
 - int successCount = testCount - failureCount - errorCount;
 - return "Test:" + testCount + " Success:" + successCount + " Failed:" + failureCount + " Error:" + errorCount;
 - }
 - }
 - }
 
第四步:修改AndroidManifest.xml,加入 ,不然会提示找不到AndroidTestRunner,这里需要注意是这句话是放在applications下面的,我一开始也不知道,放错了地方,浪费了不少时间
Xml代码
- xml version="1.0" encoding="utf-8"?>
 - package="com.test.sample"
 - Android:versionCode="1"
 - Android:versionName="1.0">
 - Android:label="@string/app_name">
 - intent-filter>
 - activity>
 - application>
 - manifest>
 
                本文标题:在Android上实现Junit单元测试的四部曲
                
                分享URL:http://www.csdahua.cn/qtweb/news45/308845.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网