简体   繁体   中英

My Junit test doesn't run

I'm new to Java, Android and JUnit. I want to learn how to write JUnit tests for an Android application. To that end, I have a very simple Android app (2 activities, 2 buttons, each button goes to the other activity). I want to test the button. This app runs fine on my phone when it's plugged in. I've been looking at the samples provided in the SDK, and I am trying to emulate them.

My problem is that when I right-click on my test project, and choose Run As -> Android JUnit test, nothing happens. I don't know why.

My test code.

package com.example.twoactivities.test;

import android.app.Instrumentation.ActivityMonitor;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.SmallTest;
import android.widget.Button;

import com.example.twoactivities.MainActivity;
import com.example.twoactivities.MainActivity2;

public class ClickButton extends ActivityInstrumentationTestCase2<MainActivity> {

    private Button mButton2;
    private long TIMEOUT_IN_MS = 100000;

    public ClickButton() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        final MainActivity a = getActivity();
        // ensure a valid handle to the activity has been returned
        assertNotNull(a);
    }

    @SmallTest
    public void click(){
        // Set up an ActivityMonitor
        ActivityMonitor activityMonitor = getInstrumentation().addMonitor(MainActivity2.class.getName(), null, false);

        //check if button is enabled
        assertTrue("button is enabled", mButton2.isEnabled());
        //click button
        mButton2.performClick();

        MainActivity2 MainActivity2 = (MainActivity2) activityMonitor.waitForActivityWithTimeout(TIMEOUT_IN_MS );
        assertNotNull("MainActivity2 is null", MainActivity2);
//      assertEquals("Monitor for MainActivity2 has not been called", 1, activityMonitor.getHits());
//      assertEquals("Activity is of wrong type", MainActivity2.class, MainActivity2.getClass());

        // Remove the ActivityMonitor
        getInstrumentation().removeMonitor(activityMonitor);

    }

//      public void tearDown() {
//      }

}

(I know it's really simple, but I'm just trying to get the basics down.)

My application.

package com.example.twoactivities;

import com.example.twoactivities.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

     @Override
       protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       }
       public void activity2(View view){
          Intent intent = new Intent(this,com.example.twoactivities.MainActivity2.class);
          startActivity(intent);
       }
}

Activity 2 of my application.

package com.example.twoactivities;

import com.example.twoactivities.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

    public class MainActivity2 extends Activity {

           @Override
           protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main2);
           }

           public void activity1(View view){
              Intent intent = new Intent(this,com.example.twoactivities.MainActivity.class);
              startActivity(intent);
           }
}

Any ideas why my test class doesn't run?

Thanks, Stephanie

You have to right click on the test itself, not the project.

According to documentation Android testing API supports JUnit 3 code style, but not JUnit 4. Try naming your test method testClick

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM