android - 是否可以使用 Butterknife 在 android 的 espresso 测试类中注入(inject) View ?

标签 android android-fragments android-espresso butterknife

是否可以使用 Butterknife 为测试类注入(inject) View ?这些 View 被注入(inject)到由我的 MainActivity 类创建和提交的 fragment 中。

这是我的测试类的代码:

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

private MainActivity mMainActivity;
private Button learnButton;
private Button teachButton;

@SuppressWarnings( "deprecation" )
public MainActivityTest() {
    super("com.example.application.app", MainActivity.class);
}

protected void setUp() throws Exception {
    super.setUp();

    mMainActivity = getActivity();
    learnButton = (Button) mMainActivity.findViewById(R.id.buttonLearn);
    teachButton = (Button) mMainActivity.findViewById(R.id.buttonTeach);
}

但是我使用 Butterknife 将 View 注入(inject)到我的 fragment 中:

public class ChooseActionFragment extends Fragment {

@InjectView(R.id.buttonTeach) Button buttonTeach;
@InjectView(R.id.buttonLearn) Button buttonLearn;

public ChooseActionFragment() { }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    ButterKnife.inject(this, rootView);
    return view;
}

我想知道如何使用 Butterknife 减少测试中的样板 View 代码,就像我在生产代码中所做的那样。

最佳答案

是的,你可以。

供引用:http://jakewharton.github.io/butterknife/javadoc/butterknife/ButterKnife.html

在测试依赖项中包含 ButterKnife。

ButterKnife.inject() 的第一个参数是“目标”,即带有@InjectView 注释字段的类实例,第二个参数是包含要注入(inject)的 View 的 Activity 、 View 或对话框。

像这样:

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

private MainActivity mMainActivity;
@InjectView(R.id.buttonLearn)
Button learnButton;

@InjectView(R.id.buttonTeach)
Button teachButton;

@SuppressWarnings( "deprecation" )
public MainActivityTest() {
    super("com.example.application.app", MainActivity.class);
}

protected void setUp() throws Exception {
 super.setUp();

  mMainActivity = getActivity();
  ButterKnife.inject(this, mMainActivity );
}

关于android - 是否可以使用 Butterknife 在 android 的 espresso 测试类中注入(inject) View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969053/

相关文章:

java - 使用 Espresso 测试工具栏标题文本 - Android

刚刚安装的Android studio,gradle报错

android - CountingIdlingResource 的 IllegalAccessError

java - 如果设备的特性与任何可用资源都不匹配,会发生什么情况?

android - 无法从 fragment 内部访问公共(public)类的方法

java - 如何在Android中以纵向模式在Fragment中实现二维码扫描?

android - 将数据从 Activity 传回已创建的 fragment

android - 重新启动应用程序以释放堆内存

Android numberpicker 主题(加减号按钮)

android - 如何为pdf文件分页 curl