Подтвердить что ты не робот

Android: Как протестировать пользовательский вид?

В Android существует несколько методов модульного тестирования, что лучше всего для тестирования пользовательского представления, которое я написал?

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

4b9b3361

Ответ 1

Тестирование узла скважины - это метод, с помощью которого тестируются отдельные единицы исходного кода, чтобы определить, подходят ли они для использования. Поэтому, когда вы говорите, что хотите протестировать свое пользовательское представление, вы можете проверить различные методы ваших пользовательских представлений, таких как "onTouchEvent", "onDown", "onFling", "onLongPress", "onScroll", "onShowPress", "onSingleTapUp", "onDraw" и различные другие в зависимости от вашей бизнес-логики. Вы можете предоставить макетные значения и проверить его. Я бы предложил два метода тестирования вашего пользовательского представления.

1) Тестирование обезьян Тестирование обезьян - это случайное тестирование, выполняемое автоматическими инструментами тестирования. Тест обезьяны - это unit test, который работает без специального теста. Обезьяна в этом случае является производителем любого ввода. Например, тест обезьяны может вводить случайные строки в текстовые поля, чтобы обеспечить обработку всех возможных пользовательских вводных данных или предоставить файлы мусора для проверки загрузочных процедур, которые слепо верили в свои данные. Это метод тестирования черного ящика, и он может проверять ваше пользовательское представление во множестве уникальных условий, в которых вы будете удивлены:).

2) Тестирование устройств

2a) Используйте устройство Robotium Unit Testing Framwork

Перейдите на сайт Robotium.org или http://code.google.com/p/robotium/ и загрузите примерный тестовый проект. Robotium - очень простая в использовании платформа, которая позволяет легко и быстро тестировать приложения для Android. Я создал его, чтобы сделать тестирование расширенных приложений для Android возможным с минимальными усилиями. Он используется совместно с ActivityInstrumentationTestCase2.

2b) Используйте платформу Android Testing Framework

Вот ссылки на ссылку: http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html а также http://developer.android.com/reference/android/test/ActivityUnitTestCase.html

Для начала: http://developer.android.com/guide/topics/testing/testing_android.html

В соответствии с одним пользователем: помимо простого тестирования не платформы зависимая логика Я не нашел умный способ запуска тестов, пока наименее для меня) любая реальная платформа логическое тестирование громоздко. Это в любом случае, почти нетривиально, потому что я обнаружили различия в реализации между эмулятором и моим фактическим устройства, и я ненавижу запускать unit testна моем устройстве затем удалите приложение.

Моя стратегия была: Попробуйте быть лаконичны и хорошо делают логику продуман, а затем проверить осуществление по частям (меньше то желательно).

Также Стивен Нг обеспечивает хороший aproach для реального unit test для решения для Android-проектов: https://sites.google.com/site/androiddevtesting/

Один пользователь сделал скринкаст.

Здесь ScreenCast я сделал о том, как я получил Unit Tests для работы. Простой блок Тесты и более сложные модульные тесты, которые зависят от ссылки на Контекст или объекты деятельности. http://www.gubatron.com/blog/2010/05/02/how-to-do-unit-testing-on-android-with-eclipse/

Надеемся, что это поможет вам проверить свой пользовательский вид во всех возможных условиях:)


Комментарий (futlib) Все ваши предложения, похоже, связаны с тестированием ACTIVITY, в то время как я действительно хочу проверить только VIEW. Возможно, я захочу использовать этот вид в других действиях, поэтому для меня не имеет смысла проверять его на конкретный. - futlib

Ответ. Чтобы реализовать пользовательский вид, вы обычно начинаете с предоставления переопределяет некоторые из стандартных методы, которые все виды. Например, "onDraw", "onKeyDown (int, KeyEvent)", "onKeyUp (int, KeyEvent)", "onTrackballEvent (MotionEvent)" и т.д. ваш пользовательский вид. Поэтому, когда вы хотите сделайте модульное тестирование для своего должны проверить эти методы и дайте им макетные значения, чтобы вы может проверить ваш пользовательский вид на всех возможных случаях. Тестирование этих методов не означает, что вы тестируете свои ДЕЯТЕЛЬНОСТЬ, но это означает пользовательский вид (методы/функции), который находится в пределах активности. Также вы будете необходимо поместить свой пользовательский вид в Деятельность в конечном итоге для вашей цели пользователей, чтобы испытать это. однажды тщательно протестированный, ваш пользовательский вид могут быть размещены во многих проектах и многие виды деятельности.

Ответ 2

Простым решением для отсутствия реализации TestCase, ориентированной на просмотр, было бы создание простой Activity в вашем тестовом проекте, который включает ваше представление. Это позволит вам написать тесты против представления с помощью простой Activity. Информация о тестировании активности:

http://developer.android.com/reference/android/test/ActivityUnitTestCase.html

Ответ 3

Здесь другое предложение, которое прекрасно работает во многих случаях: если вы ссылаетесь на свой пользовательский вид из файла макета, вы можете использовать AndroidTestCase, раздуть представление, а затем выполнить тесты против него изолированно. Вот пример кода:

my_custom_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<de.mypackage.MyCustomView ...

MyCustomView.java:

public class MyCustomView extends LinearLayout {

    public MyCustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setTitle(CharSequence title) {
        ((TextView) findViewById(R.id.mylayout_title_textView)).setText(title);
    }
...

MyCustomViewTest.java:

public class MyCustomViewTest extends AndroidTestCase {

    private MyCustomView customView;

    @SuppressLint("InflateParams")
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        customView = (MyCustomView) LayoutInflater.from(getContext())
            .inflate(R.layout.my_custom_layout, null);
    }

    public void testSetTitle_SomeValue_TextViewHasValue() {
        customView.setTitle("Some value");
        TextView titleTextView = (TextView) valueSelection.findViewById(R.id.mylayout_title_textView);
        assertEquals("Some value", titleTextView.getText().toString());
    }
...