And*_*ins 6 android android-fragments android-espresso butterknife
是否可以使用Butterknife注入测试类的视图?视图被注入到由MainActivity类创建和提交的片段中.
这是我的测试类的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是我使用Butterknife在我的片段中注入视图:
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;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在我的测试中使用Butterknife来减少我的样板视图代码,就像我在生产代码中所做的那样.
是的你可以。
供参考:http://jakewharton.github.io/butterknife/javadoc/butterknife/ButterKnife.html
在测试依赖项中包含 ButterKnife。
ButterKnife.inject() 的第一个参数是“目标”,即带有 @InjectView 注释字段的类的实例,第二个参数是包含要注入的视图的 Activity、View 或 Dialog。
像这样的东西:
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 );
}
Run Code Online (Sandbox Code Playgroud)