Hello,

I am trying to integrate Junit to my application for unit testing. I
know I am missing something. Below is the code, please help me
identify the root cause.

I am able to send keys to the default focused edittext, but am unable
to press a button on the same screen. I have printed the id of the
button and it corresponds correctly to the hex id on R on my project.
And am unable to send a button click to that button. I know I am
missing something real obvious to some. I guess I should pick up the
reference of the button from the activity itself, but for that i need
to make the button public. That beats the purpose of using junit
right, I mean I need to have debug code in my production ready
application :).

Also if I replace the runOnUiThread (runnable code) with a
@UiThreadTest, I get a Runtime exception (the android doc seems to
suggest that I should have one of them to avoid having this exception,
but the doc seems outdated and wrong).

Please help. ;-) this time I will wait for responses and wont fix it
myself.

package com.my.android.test;

import com.my.android.R;
import com.my.android.MyActivity;

import android.app.Activity;
import android.app.Instrumentation;
import android.os.Looper;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;

public class TestCartView extends
        
android.test.ActivityInstrumentationTestCase2<com.My.android.MyActivity>
{

        Activity MyActivity;
        View rootView, firstscreen;
        Looper MyLooper ;
        Instrumentation instrumentation ;
        public TestCartView() {
                super("com.My.android.MyActivity", MyActivity.class);
        }

        public TestCartView(String pkg, Class<MyActivity> activityClass) {
                super(pkg, activityClass);
        }

        protected void setUp() throws Exception {
                super.setUp();
                instrumentation = getInstrumentation();
                MyActivity = super.getActivity();
                MyLooper = MyActivity.getMainLooper() ;
                rootView = MyActivity.getLayoutInflater().inflate(
                                com.My.android.R.layout.homescreen, null);
                firstscreen = MyActivity.getLayoutInflater().inflate(
                                com.My.android.R.layout.firstscreen, null);
        }

        public void testSomethingSilly() throws Throwable {
                assertNotNull(myActivity);
                assertNotNull(rootView) ;
                assertNotNull(firstscreen) ;

-->Working              sendKeys("9 0 2 1 0");

                clickButtonOnUiThread(com.my.android.R.id.btn_clickme, 
firstscreen);
        //      clickButtonOnUiThread(com.my.android.R.id.row_deals, rootView);
}

        private void clickButtonOnUiThread(int buttonId, View viewHolder)
throws Throwable {
-->id of button final View button = viewHolder.findViewById(buttonId);
--> breakpoint here     Log.v("Junit","buttonname "+button.getId());

                myActivity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                                button.performClick();
                        }
                });
        }

        public void testSomethingSillier() {
                assertNotNull(myActivity);
        }

        protected void tearDown() throws Exception {
                super.tearDown();
        }

}

Regards
Conny

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to