7

के साथ शून्य लौटाता है विधि को समर्थन देता है जब मैं Roboelectric और JUnit में आधारित किसी टेस्ट केस के माध्यम से इसे खोलता हूं तो समर्थन प्राप्त करता है।getSupportActionBar() Robolectric

यह मेरा साधारण परीक्षण मामला है:

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"); 
} 
} 

और ये मेरे गतिविधि वर्ग है:

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 इसे ठीक करने पर कोई उज्जवल विचार ?? क्या मुझे कुछ छाया गतिविधि लिखनी है या क्या कोई जानता है कि रॉबलेक्ट्रिक के साथ इन एक्शन बार समस्याओं के साथ कैसे काम करना है ??

किसी भी मदद के लिए धन्यवाद

+0

robolectric 2.2 => http://robolectric.blogspot.be/2013/10/robolectric-22-released.html – Somatik

उत्तर

5

समर्थन ActionBar
मैं वापस जिंजरब्रेड एसडीके बिल्ड नंबर के साथ अपने परीक्षण करने के लिए एक @Config एनोटेशन जोड़कर समर्थन ActionBar का एक उदाहरण प्राप्त करने में सक्षम था:

@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

अद्यतन
रोबोलेक्ट्रिक 2.2 के साथ आपको केवल अपने परीक्षण विधियों या कक्षा में कॉन्फ़िगर एनोटेशन "@ कॉन्फिग (reportSdk = 10)" जोड़ना होगा और इसे भी काम करना चाहिए।

+0

हाय मार्को, आपके उत्तर के लिए धन्यवाद, लेकिन मैं एक्शनबारशरॉक का उपयोग नहीं कर रहा हूं। मैं android.support.v7.app.ActionBarActivity का उपयोग कर रहा हूं। क्या आपके पास इसके बारे में कोई विचार है? – revolutionary

+0

इसके बारे में खेद है, मैंने आपके प्रश्न के उत्तर में संशोधन किया है। –

+0

हैलो मार्को, आपके उत्तर के लिए धन्यवाद। अब मुझे बहुत अजीब लंबी त्रुटि मिल रही है। ऐसा लगता है कि मुख्य गतिविधि के लिए लेआउट को भरने पर आता है। – revolutionary

संबंधित मुद्दे