2014-09-14 4 views
1

У меня Android-приложение, и я бы хотел создать для него тестовые примеры.Android Testing - Невозможно установить правильную конфигурацию

Я прочитал Docs в Docs на Android Dev, и попробовал много вещей ...

Вот основная структура моего приложения: enter image description here

Я создал SadAppTest класс, с помощью ALT + ENTER над SadApp extends Application класса в редакторе и выберите опцию Create Test, см:

enter image description here

Вот код сгенерированной тестового класса:

package com.procode.saveadog;

import android.test.ApplicationTestCase; 

/** 
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> 
*/ 
public class SadAppTest extends ApplicationTestCase<SadApp> { 
    public SadAppTest() { 
     super(SadApp.class); 
    } 
} 

Я пытался добавить простой тест, который проверяет что-то в SadApp классе. В документах я прочитал, что должен получить объект приложения в коде функцией getActivity().

Я создал очень простой тест, который запрашивает UUID пользователя из класса Application и сравнивает, что данный UUID будет таким же. Код:

public void testUserUuid(){ 
    assertEquals(getApplication().getUserId(), getApplication().getUserId()); 
} 

Но этот тест бросает NullPointerException!

java.lang.NullPointerException 
    at com.example.myapp.SadAppTest.testUserUuid(SadAppTest.java:14) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) 
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) 
    at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) 
    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 

метод высокоточного getActivity() возвращает нуль, потому этот тест работает нормально:

public void testUserUuid(){ 
    assertTrue(getApplication() == null); 
} 

Что мне не хватает?

ответ

0

См ApplicationTestCase документы, необходимые для вызова createApplication() перед getApplication():

Тестовый пример не будем называть OnCreate(), пока ваш тест не вызывает createApplication(). Это дает вам возможность настроить или настроить любые дополнительные рамки или тестовую логику до onCreate().

+0

Спасибо! Я уже «решил» эту проблему, забыв об этом, и через месяц повторно создал полный тестовый материал. Но это было решение, поэтому еще раз спасибо! –

Смежные вопросы