7

メソッドgetSupportActionBar()は、RoboelectricとJUnitに基づくテストケースを通して呼び出すとnullを返します。getSupportActionBar()はRobolectricでnullを返します

これは私の簡単なテストケースである:

package com.mobile.test; 

import static org.hamcrest.CoreMatchers.equalTo; 
import static org.junit.Assert.assertEquals; 
import static org.junit.Assert.assertThat; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.robolectric.Robolectric; 
import org.robolectric.RobolectricTestRunner; 
import android.app.Activity; 
import android.content.Intent; 
import com.mobile.android.core.R; 
import com.mobile.android.core.activity.MainActivity; 
import com.mobile.android.core.activity.TestActivity; 

@RunWith(RobolectricTestRunner.class) 
public class NavigationDrawerTest { 
private Activity activity; 

@Test 
public void testNavigationDrawer() { 
    activity = Robolectric.buildActivity(MainActivity.class).create().get(); 
    String hello = activity.getResources().getString(R.string.drawer_open); 
    System.out.println(hello); 
    assertEquals(hello, "Menu"); 
} 
} 

そして、これは私のActivityクラスです:

public class MainActivity extends ActionBarActivity { 
// Drawer related 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
private ActionBarDrawerToggle mDrawerToggle; 
String[] mDrawerOptions; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // enable ActionBar app icon to behave as action to toggle nav-drawer 
    if (getSupportActionBar() != null) { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
    } 
} 
} 

これを修正するにはHWO上の任意の鮮やかなアイデア? シャドーアクティビティを書く必要があるのですか、誰かがRObolectricでこれらのアクションバーの問題を処理する方法を知っていますか?任意の助け

おかげ

+0

robrolectricで修正する必要があります。2.2 => http://robolectric.blogspot.be/2013/10/robolectric-22-released.html – Somatik

答えて

5

サポートアクションバー私はジンジャーブレッドSDKのビルド番号と私のテストに@Configアノテーションを追加することにより、バックサポートアクションバーのインスタンスを取得することができた

@Test @Config(reportSdk = 10) 
public void actionbarTest(){ 
.... Your Test here 
} 

単純なプロジェクトのセットアップはここで見ることができます:simple-robolectric



ActionBarSherlockあなたは、あなたのテストパッケージに変更ActionBarSherlockファイルを追加し、@Beforeメソッドで次のメソッドを呼び出す必要があり

ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class); 
ActionBarSherlock.unregisterImplementation(ActionBarSherlockNative.class); 
ActionBarSherlock.unregisterImplementation(ActionBarSherlockCompat.class); 

命令の完全なセットがここで見つけることができます:ActionBar and Robolectric working together

更新
Robolectric 2.2では、テストメソッドまたはクラスに構成注釈 "@Config(reportSdk = 10)"を追加するだけで済みます。

+0

こんにちはマルコ、返信いただきありがとうございますが、私はActionBarSherlockを使用していません。 android.support.v7.app.ActionBarActivityを使用しています。あなたはそれについて何か考えていますか? – revolutionary

+0

申し訳ありませんが、私はあなたの質問の答えを修正しました。 –

+0

こんにちはマルコ、返信いただきありがとうございます。 非常に奇妙な長いエラーが発生しました。 MainActivityのレイアウトを膨らませているようだ。 – revolutionary