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