현재 Intent
엑스트라에 대해 조금 혼란 스럽습니다. 소위 엑스트라가 Bundle
이고 Bundle
이 내부적으로지도라는 것을 알고 있습니다.단순한 의도 - jUnit 테스트가 실패했습니다.
그리고이지도에 무언가를 넣으면 intent.putExtra("someName", "someValue");
과 함께지도에 "someName"이라는 키가 있다고 예상됩니다. 그러나 그것은 매우 단순한 단위 테스트에 따르면 아닙니다. 다음에
public void testIntent(){
assertTrue("true != true", true);
assertFalse("false != false", false);
final String extraName = "IamAnExtra";
final String extraValue = "IamAValue";
Intent intent = new Intent();
intent.putExtra(extraName, extraValue);
assertTrue("hasExtra==false", intent.hasExtra(extraName));
}
이제 THS 결과 :
의도 코드 뒤에 무슨 일이 일어나고 마법 어떤 종류의junit.framework.AssertionFailedError: hasExtra==false
? 정상적으로 작동하는 것을 알고 있습니다. 지도를 캐시하고 을 보내야합니까? 미리 감사드립니다.
편집 :
는 또한 실패 라인 assertNotNull("extras == null", intent.getExtras());
을 추가했습니다.
그리고는 방법 putExtra
및 getExtras
에서 코드 검사 : 멤버 mExtras가 null의 경우
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
및
public Bundle getExtras() {
return (mExtras != null)
? new Bundle(mExtras)
: null;
}
그래서는, null가 getExtras 반환됩니다. 그러나 putExtra는
mExtras
에 대한 새 Bundle 인스턴스를 만들므로
mExtras
이어야하며이 null이 아니어야합니다. 나는 혼란스러워.
_unit test_ 또는 _instrumented test_로 실행하고 있습니까? JUnit 4는 어떤 프레임 워크를 사용하고 있습니까? – josemigallas
단위 테스트. 나는 보통의 TestCase를 사용했다. – JacksOnF1re
나는 보통의 인 텐트를 사용하는 것이 좋은 오래된 유닛과 함께 사용하는 것이 좋다고 생각했다. 나는 그것을 보내려고하지 않을 것이다. – JacksOnF1re