Articles of Андроидный робок

Невозможно использовать FakeHttpLayer Robolectric (NullPointerException при вызове getFakeHttpLayer)

Обновление 1 После удаления расширения ServiceTestCase моего тестового класса я редактировал мой файл gradle, чтобы изменить testInstrumentationRunner на org.robolectric.RobolectricTestRunner но я получаю еще одну ошибку: Running tests Test running started Test running failed: Instrumentation run failed due to 'java.lang.NoSuchMethodException' Empty test suite. Я искал Google, но я не мог понять, почему я получаю это сообщение […]

Robolectric раздувает пользовательские представления для тестов

Я пытаюсь написать некоторые тесты для пользовательского представления, но у меня возникают проблемы с раздуванием пользовательского представления в моем тестовом примере. Ошибка, которую я получаю android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true at android.view.LayoutInflater.inflate(LayoutInflater.java:458) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at com.androidas.models.ui.order.MyLocationViewTest.setUp(MyLocationViewTest.java:45) Я даже попытался сделать фиктивную активность (TestActivity) с […]

Robolectric 2 – создать активную проверку с намерением

Я пишу блок-тест с Robolectric. Настройка выглядит так: @RunWith(RobolectricTestRunner.class) public class MiAirlineActivityTest { @Before public void setUpFor() { Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE, MiAirlineActivity.class); intent.putExtra(EMPLOYEEID_EXTRA, "username"); miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class) .withIntent(intent).start().get(); } } Как передать контекст при создании нового намерения. Я следовал примеру из этого вопроса. Там @David говорит, «… мне нужно было дать контекст и […]

Инфляция пользовательского макета с фрагментами в Robolectric не работает

При раздувании макета во Фрагменте с помощью LayoutInflater я получаю это исключение: ./res/layout/locations_list.xml line #-1 (sorry, not yet implemented): Error inflating class com.costum.android.widget.LoadMoreListView Я понял, что это происходит при раздувании пользовательского макета в @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.locations_list, container, false); } Изменить Это location_list.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout […]

Kotlin и ArgumentCaptor – IllegalStateException

У меня возникла проблема с захватом аргумента класса через ArgumentCaptor. Мой тестовый класс выглядит следующим образом: @RunWith(RobolectricGradleTestRunner::class) @Config(sdk = intArrayOf(21), constants = BuildConfig::class) class MyViewModelTest { @Mock lateinit var activityHandlerMock: IActivityHandler; @Captor lateinit var classCaptor: ArgumentCaptor<Class<BaseActivity>> @Captor lateinit var booleanCaptor: ArgumentCaptor<Boolean> private var objectUnderTest: MyViewModel? = null @Before fun setUp() { initMocks(this) … objectUnderTest = […]

Использование Robolectric для проверки кода, запускающего активность

У меня есть код, который я хочу проверить с помощью Robolectric. В основном я хочу проверить, что нажатие кнопки запускает действие. HomeScreenFragment.java: public class HomeScreenFragment extends Fragment { private Button mSignInButton; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // call to super class } @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ // inflate view […]

Robolectric (android): Тестирование событий?

Я написал несколько тестов, используя robolectric, и теперь я хочу сделать некоторые реальные тестовые классы. Один из них заметил, что я не могу проверить такие события, как onCreate, onLocationChanged и т. Д. Какова стандартная практика тестирования событий … Должен ли я извлечь код внутри событий и поместить их в метод, событие вызовет метод, а также […]

NPE при получении Robolectric ShadowApplication с волейболом и кинжалом

В моем приложении для Android я создал Volley. Robolectric.application инициализируется, и все остальные тесты выполняются гладко. Я получаю эту ошибку при попытке получить отклик HTTP-ответа. Это мой тест: @RunWith(MyRobolectricTestRunner.class) public class ApiTests { @Inject protected Api api; @Before public void setUp() { ObjectGraph.create(new AndroidModule(Robolectric.application), new TestApplicationModule()).inject(this); } @Test public void shouldGetErrorList() throws Exception { Project […]

В чем разница между Robolectric.setupActivity () и Robolectric.buildActivity ()?

Я новичок в Robolectric, пожалуйста, помогите мне разобраться в этом, какая разница между этими LoginActivity = new LoginActivity (); LoginActivity = Robolectric.setupActivity (LoginActivity.class); LoginActivity = Robolectric.buildActivity (LoginActivity.class) .create (). Start (). Resume (). Get ();

Имитация щелчка по пункту меню в Robolectric

Довольно просто имитировать нажатие кнопки в Robolectric: Button someButton = (Button) findViewById(R.id.some_button); someButton.performClick(); Однако я не могу понять, как сделать то же самое с элементом меню. Я создаю меню в Activity.onCreateOptionsMenu , как я могу имитировать щелчок по одному из своих элементов?