Can Butterknife be used to inject views in espresso Test clases in android?

Can Butterknife be used for injection in sight for a test class? Views are injected into the fragment that is created and passed by my MainActivity class.

Here is the code from my test class:

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); } 

However, I use Butterknife to enter the views in my snippet:

 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; } 

I want to know how I could use Butterknife to reduce my template code in my tests, as well as in my production code.

+6
source share
1 answer

Yes, you can.

For reference: http://jakewharton.imtqy.com/butterknife/javadoc/butterknife/ButterKnife.html

Include ButterKnife in your test dependencies.

The first argument to ButterKnife.inject () is the β€œtarget,” that is, an instance of the class with annotated @InjectView fields, and the second argument is an Activity, View, or Dialog that contains the entered views.

Something like that:

 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 ); } 
+2
source

All Articles