2016-08-24 9 views
2

はこのように、私はToolbarと抽象BaseActivityを作るとしますエスプレッソを使用して抽象クラスをテストするにはどうすればよいですか?

public class MainActivity extends BaseActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

レイアウトは以下のとおりです:

toolbar.xml

このように、

/** 
* A base activity that handles common functionality in the app. 
* This includes the 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); 
      } 
     } 
    } 
} 

そして、このBaseActivityを拡張MainActivity

<?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> 

私の質問は:どのように私はespressoを使用してBaseActivityをテストすることができますか?例えば、Toolbarが存在するかどうかを確認するには?

答えて

2

抽象BaseActivityクラスをテストするには、TestActivityを作成する必要があります。しかし、このクラスは、BaseActivityクラスへの影響を避けるために必要なメソッドとコードをオーバーライドするだけでよいことに注意してください。

public class TestActivity extends BaseActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

そして、あなたは

@RunWith(AndroidJUnit4.class) 
@SmallTest 
public class BaseActivityTest { 
    @Rule 
    public ActivityTestRule<TestActivity> mTestActivityActivityTestRule = new ActivityTestRule<TestActivity>(TestActivity.class, true, false); 
    @Before 
    public void set() { 
     //setup your things 
    } 
    @Test 
    public void testRequest1() { 
     mTestActivityActivityTestRule.launchActivity(new Intent()); 
    } 
} 
にあなたのエスプレッソを使用することができます
関連する問題