我已經顯示它驗證文本咖啡測試:使用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
你的調查更有意義的完整答案,所以發表什麼工作,並接受你自己的答案;) –