12
Robolectric (version 2.4 기기 )

Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Embed Size (px)

Citation preview

Page 1: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Robolectric(version 2.4 기준 )

Page 2: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

class AbcTest {@BeforeClasspublic static void setUpOnce() { }

@Beforepublic void setUp(){}

@Testpublic void testA() { … assert(); }

@Testpublic void testB() { … assert(); }

@Afterpublic void tearDown(){}

@AfterClasspublic static void tearDownOnce() {}

}

@BeforeClass

@Before @Before

@Test @Test

@After @After

@AfterClass

Page 3: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

src/androidTest/java/

src/androidTest/res/org.robolectrc.Config.proper-ties

Api version < 19emulateSdk = 18

#manifest=../CoupangAndroid/src/main/AndroidManifest.xml#resourceDir = ../../../CoupangAndroid/build/intermedi-ates/res/debug

manifest=CoupangAndroid/src/main/AndroidManifest.xmlresourceDir = ../../../CoupangAndroid/build/intermedi-ates/res/debug

Page 4: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Run configuration All test Class/Method test

Test Report gradlew jacocoReportTest

Page 5: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Log / Shadow

@RunWith(value = RobolectricTestRunner.class)public class RobolectricExampleTest {

@Testpublic void testLog() {

Log.e("tag", "test1");

ShadowLog.stream = System.out;Log.e("tag", "test2");

View v = new View(Robolectric.application);v.getOnClickListener(); // error

ShadowView shadow = Robolectric.shadowOf(v);shadow.getOnClickListener();

}}

E/tag: test2

Page 6: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Activity life cycle, Reflection

@Testpublic void testClickOn() {

MyCoupangActivity act = Robolectric.buildActivity(MyCoupangActivity.class).create().visible().get();

View v = act.findViewById(R.id.ibt_mycoupang_login);Robolectric.clickOn(v);

}

@Testpublic void testHasHoneycomb() {

Robolectric.Reflection.setFinalStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.HONEYCOMB);

assertTrue(VersionUtils.hasHoneycomb());

Robolectric.Reflection.setFinalStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.GINGERBREAD);

assertFalse(VersionUtils.hasHoneycomb());}

Page 7: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

startActivity

@Testpublic void testStartActivity() {

OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View view) {

Context context = view.getContext();context.startActivity(new Intent(context, WebViewActivity.class));

}};

Activity activity = Robolectric.buildActivity(Activity.class).create().get();Button btn = new Button(activity);btn.setOnClickListener(listener);btn.performClick();

ShadowActivity shadowActivity = Robolectric.shadowOf(activity);Intent intent = shadowActivity.getNextStartedActivity();ShadowIntent shadowIntent = Robolectric.shadowOf(intent);

assertThat(shadowIntent.getComponent().getClassName(), equalTo(WebViewActivity.class.getName()));

}

Page 8: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Display

@Testpublic void testSpToPixel() throws Exception {

new Display(); // errorDisplay display = Robolectric.newInstanceOf(Display.class);ShadowDisplay shadowDisplay = Robolectric.shadowOf(display);

shadowDisplay.setScaledDensity(2F); // XHDPI = 2FRobolectric.setDefaultDisplay(display);assertThat(WidgetUtil.spToPixel(20), is(40));

}

@Testpublic void testAdjustHeight() throws Exception {

Context context = Robolectric.getShadowApplication().getApplicationContext();

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

ShadowDisplay shadowDisplay = Robolectric.shadowOf(windowManager.getDefaultDisplay());shadowDisplay.setWidth(720);shadowDisplay.setHeight(1280);

assertThat(WidgetUtil.adjustHeight(context, 80, 60), is(540));}

Page 9: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Networking

@Testpublic void testHttpResponse() throws Exception {

final int RESPONSE_NUM = 200;final String BODY = "test body";

Robolectric.addPendingHttpResponse(RESPONSE_NUM, BODY);

DefaultHttpClient httpClient = new DefaultHttpClient();HttpGet request = new HttpGet("http://example.com");HttpResponse res = httpClient.execute(request);

int resNum = res.getStatusLine().getStatusCode();String str = EntityUtils.toString(res.getEntity());

assertThat(resNum, equalTo(RESPONSE_NUM));assertThat(str, allOf(equalTo(BODY), instanceOf(String.class)));

}

AsyncTask : SplashActivityTest.javaExamples : …/resttemplate/*.javaRobolectric.getFakeHttpLayer().interceptHttpRequests(false)

Page 10: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Fragment

@Testpublic void testFragment() {

MyCoupangActivity act = Robolectric.buildActivity(MyCoupangActivity.class).create().get();

FragmentManager man = act.getSupportFragmentManager();

man.beginTransaction().add(new Fragment(), "1").commit();Fragment f = man.findFragmentByTag("1");

assertThat(f, notNullValue());}

Page 11: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Shadow

protected void onCreate(Bundle savedInstanceState) { … View v = findViewById(…); v.setOnClickListener(…);

}

View

android view

class MyShadowView {… public void onClickListerner(…) { throw new Exception(); }}

Page 12: Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { } @Before public void setUp(){} @Test public void testA()

Thank you!

Forward Ventures LLC Korea, F7 736-6 YecksamDong, Gangnam-gu, Seoul, Korea