android testing - pic.huodongjia.com€¦ · s ½ Þ _ Ü ) r ñ Ó f void job1(); void job2(); int...

Post on 27-Jun-2020

11 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Android TestingGemini

https://github.com/geminiwen

About Me• Gemini

• SegmentFault for Android

• SegmentFault

• Android

• engine.io

• Mockito

• Dagger

• CI

….

• Unit Test

• UI

UI

• 100%

int add (int a, int b) { return a + b;

}

assertEquals(add(1,2), 3 );

void job1(); void job2(); int job3();

assertEquals(job3_result, job3());

UI

Android Testing Framework

Espresso

@Test public void greeterSaysHello() { onView(withId(R.id.name_field)) .perform(typeText(“Steve"));

onView(withId(R.id.greet_button)) .perform(click());

onView(withText("Hello Steve!")) .check(matches(isDisplayed())); }

UI

• UI

• UI

void business()

callback

IdleResource By

Espresso

Idle Resource

@Override boolean isIdleNow();

ResourceCallback.onTransitionToIdle();

okhttp3-idleresource

Mock

• Mock Object

• Mock Http

Mockito

• model UI

• model

@Test public void test1() { // mock MyClass test = Mockito.mock(MyClass.class);

// getUniqueId() when(test.getUniqueId()).thenReturn(43);

// mock assertEquals(test.getUniqueId(), 43); }

OkHttp MockWebServer

Mock Object

• Dagger2 —— DI

Dagger Components

• Module ——

• Component ——

• @Inject ——

Module Source1

Component

Module Source2

@Inject

App with inject point

Components

Module

TestModule

Dagger Management

• User Store

• Database Instance (SQLite)

• Retrofit Instance

Gitlab CI

• TDD ——

Thanks!

top related