Java 如何使用浓缩咖啡测试抽象类?
假设我用a做一个抽象的Java 如何使用浓缩咖啡测试抽象类?,java,android,testing,android-testing,android-espresso,Java,Android,Testing,Android Testing,Android Espresso,假设我用a做一个抽象的BaseActivity,如下所示: /** * 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;
BaseActivity
,如下所示:
/**
* 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);
}
}
}
}
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
以及扩展此BaseActivity
的MainActivity
,如下所示:
/**
* 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);
}
}
}
}
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
布局如下:
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>
我的问题是:如何使用测试
BaseActivity
?例如,要检查工具栏是否存在?您应该为测试抽象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());
}
}
@RunWith(AndroidJUnit4.class)
@小测验
公共类BaseActivityTest{
@统治
public ActivityTestRule mtestActivityActivityStrule=新的ActivityTestRule(TestActivity.class,true,false);
@以前
公共无效集(){
//摆好你的东西
}
@试验
公共void testRequest1(){
mtestActivityActivityStrule.launchActivity(new Intent());
}
}
不要忘记在androidTest模块清单中声明此活动。