我已经显示它验证文本咖啡测试:使用espresso时,setContentView可以被android-annotations替换吗?
public class InformationActivityTests {
@Rule
public ActivityTestRule<InformationActivity_> mInformationActivityTestRule =
new ActivityTestRule<InformationActivity_>(InformationActivity_.class) {
@Override
protected Intent getActivityIntent() {
Intent i = new Intent(getTargetContext(), InformationActivity_.class);
i.putExtra("INFORMATION", "Espresso");
return i;
}
};
@Test
public void textIsDisplayed() {
onView(withText("Espresso")).check(matches(isDisplayed()));
}
}
这个测试通过当活动有以下代码:
@EActivity
public class InformationActivity extends AppCompatActivity {
@ViewById(R.id.information_view)
TextView informationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_information);
Intent intent = getIntent();
String information = intent.getStringExtra("INFORMATION");
informationView.setText(information);
}
}
但失败当我“移动”的setContentView到@ EActivity注释:
@EActivity(R.layout.activity_information)
public class InformationActivity extends AppCompatActivity {
@ViewById(R.id.information_view)
TextView informationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String information = intent.getStringExtra("INFORMATION");
informationView.setText(information);
}
}
E RROR是:
了java.lang.RuntimeException:无法启动活动ComponentInfo {com.edu/com.edu.InformationActivity_}:显示java.lang.NullPointerException:尝试调用虚拟方法“无效android.widget.TextView .setText(java.lang.CharSequence)'在一个空对象引用
我做错了什么,或者它是与espresso/android-annotations的问题?
https://github.com/androidannotations/androidannotations/issues/1009#issuecomment-43714777这个答案建议使用'@ AfterViews'注释上方法与视图配置。我没有使用android-annotations思想的经验。 –
谢谢,它的工作原理。其实你的答案比我的好,所以随时发布,我会接受。 – LLL
你的调查更有意义的完整答案,所以发表什么工作,并接受你自己的答案;) –