現在、私は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
からコードをチェック:
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;
}
だから、メンバーmExtrasがnullの場合、nullがgetExtrasのために返されます。 しかし、putExtraはmExtras
の新しいBundleインスタンスを作成します。したがって、 mExtras
はでなければなりません。よくわかりません。
あなたは_unit test_または_instrumented test_として実行していますか? JUnit 4はどのフレームワークを使用していますか? – josemigallas
単体テスト。私は通常のTestCaseを使用しました。 – JacksOnF1re
私は、普通のインテントを使っても良い古いユニットで使うのは大丈夫だと思ったのですか?私はそれを送ろうとするつもりはありません。 – JacksOnF1re