java - How can I test an abstract class using Espresso? -
suppose make abstract baseactivity toolbar, this:
/** * base activity handles common functionality in app. * includes toolbar */ public abstract class baseactivity extends appcompatactivity { // primary toolbar private toolbar mtoolbar; @override public void setcontentview(int layoutresid) { super.setcontentview(layoutresid); settoolbar(); } private void settoolbar() { if (mtoolbar == null) { mtoolbar = (toolbar) findviewbyid(r.id.toolbar); if (mtoolbar != null) { mtoolbar.setnavigationcontentdescription(getresources().getstring( r.string.navigation_drawer_description_ally)); setsupportactionbar(mtoolbar); } } } } and mainactivity extends baseactivity, this:
public class mainactivity extends baseactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } } the layouts are:
toolbar.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorprimary" android:elevation="@dimen/spacing_tiny" android:theme="@style/themeoverlay.appcompat.dark.actionbar" android:popuptheme="@style/themeoverlay.appcompat.light" android:fitssystemwindows="true" android:minheight="?attr/actionbarsize" > </android.support.v7.widget.toolbar> activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".mainactivity" > <include layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" /> </linearlayout> my question is: how can test baseactivity using espresso? to, example, check if toolbar exists?
you should create testactivity testing abstract baseactivity class. remember, class should override necessary method , code avoid effect baseactivity class.
public class testactivity extends baseactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } } and can use espresso
@runwith(androidjunit4.class) @smalltest public class baseactivitytest { @rule public activitytestrule<testactivity> mtestactivityactivitytestrule = new activitytestrule<testactivity>(testactivity.class, true, false); @before public void set() { //setup things } @test public void testrequest1() { mtestactivityactivitytestrule.launchactivity(new intent()); } }
Comments
Post a Comment