Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { }...
-
Upload
harold-willis -
Category
Documents
-
view
223 -
download
0
Transcript of Robolectric (version 2.4 기준 ). class AbcTest { @BeforeClass public static void setUpOnce() { }...
Robolectric(version 2.4 기준 )
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
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
Run configuration All test Class/Method test
Test Report gradlew jacocoReportTest
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
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());}
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()));
}
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));}
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)
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());}
Shadow
protected void onCreate(Bundle savedInstanceState) { … View v = findViewById(…); v.setOnClickListener(…);
}
View
android view
class MyShadowView {… public void onClickListerner(…) { throw new Exception(); }}
Thank you!
Forward Ventures LLC Korea, F7 736-6 YecksamDong, Gangnam-gu, Seoul, Korea