Тестирование Android UiAutomator

Я создал простое действие, в котором у меня есть 2 кнопки для отправки и отмены. Я просто хочу протестировать этот проект, используя тестирование UI Automator. Поэтому я создаю тестовый проект для Android и создаю класс. Я расширяю этот тестовый класс UiAutomatorTestCase, Я также добавил uiautomator.jar, android.jar и библиотеку junit3. Но когда я запускаю тестовый пример, он выдает ошибку об

Ошибка TestSuiteConstruction и java.lang.RuntimeException.

Однако я добавляю конструктор, но так как он не принимает никаких параметров, я не могу добавить какой-либо параметр. Вот мой код теста. Пожалуйста, устраните эту ошибку как можно скорее. Можете ли вы сказать мне что-нибудь, что я не добавил в свой проект?

package com.example.automatorapp.test;

import android.test.suitebuilder.TestSuiteBuilder;
import android.util.Log;

import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import com.example.automatorapp.MainActivity;

public class testDemo1 extends UiAutomatorTestCase
{
    public testDemo1()
    {

    }

    public void testdemo() throws UiObjectNotFoundException
    {   
        getUiDevice().pressHome();
        Log.e("how r u","hello");
    }
}

1 ответ

Решение

Попробуйте изменить имя вашего класса, чтобы оно не начиналось с "test", и удалите конструктор. По соглашению имя класса начинается с заглавной буквы, а ваше имя начинается со строчной буквы "t". Кроме того, опять же, по соглашению, тестовые классы JUnit3 помещают слово "Test" в конце. http://junit.sourceforge.net/junit3.8.1/javadoc/junit/framework/TestCase.html Так что в вашем примере имя класса testdemo1 будет чем-то вроде строки Demo1Test (помните, что имя файла должно соответствовать имени класса).

Однако, к моему удивлению, слегка измененная версия вашего кода работала на моей машине. Вот код, который работает нормально.

package com.example.automatorapp.test;

import android.util.Log;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class testDemo1 extends UiAutomatorTestCase
{
    public testDemo1()
    {
    }
    public void testdemo() throws UiObjectNotFoundException
    {
        getUiDevice().pressHome();
        Log.e("how r u","hello");
    }
}

Я получил сообщение журнала в журнале Android тоже.

E/how r u (24667): hello

Поэтому у вас могут возникнуть проблемы с настройкой проекта или средой сборки. Насколько я знаю, этот проект (для тестирования) должен быть независимым от кода или проекта для приложения, которое вы хотите протестировать. Однако у вас есть импорт в приложение, которое вы хотите протестировать.

import com.example.automatorapp.MainActivity;

Поскольку вы уже опубликовали немало вопросов, связанных с UI Automator, возможно, вы можете подвести итоги своего прогресса. Например, вы когда-нибудь успешно тестировали UI Automator?

PS: Я надеялся увидеть отзывы о ваших предыдущих вопросах. Без вашей обратной связи трудно понять, по какому пути вы идете и были ли ответы актуальны или полезны для вас.

Другие вопросы по тегам