2013-04-08 12 views
5

मेरे पास यूआई-कम खंड में एक व्यवसाय तर्क है जिसे मुझे परीक्षण करना है। मैंने 2 विकल्प की कोशिश की है और दोनों विफल हो गए हैं।एंड्रॉइड फ्रैगमेंट्स का परीक्षण

1. AndroidTestCase का उपयोग करें और नकली गतिविधि बनाएं।

कोड

@Override 
protected void setUp() { 
    Intent i = new Intent(getTestContext(), TestActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    getTestContext().startActivity(i); 
} 

बाद

नकली गतिविधि के साथ एक अपवाद

Permission denied: checkComponentPermission() reqUid=10104 
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.xxx.iabsample.test/.TestActivity } from ProcessRecord{40769510 28116:com.xxx.iabsample/10070 (pid=28116, uid=10070) requires null 

2. उपयोग ActivityInstrumentationTestCase2 फेंकता

कोड

public class IabTest extends ActivityInstrumentationTestCase2<TestActivity> { 
    public IabTest() { 
     super("com.xxx.iabsample.test", TestActivity.class); 
    } 
} 

एक अपवाद

java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx.iabsample/.test.TestActivity } 

फेंकता है ऐसा लगता है कि यह, परीक्षण लक्ष्य app से गतिविधि शुरू करने के लिए परीक्षण app से नहीं की कोशिश करता है।

तो, टुकड़ों का परीक्षण करने का सही तरीका क्या है?

+0

इस http://stackoverflow.com/questions/4162447/android-java-lang-securityexception-permission-denial-start-intent – Elior

उत्तर

-2
//Please try to use bellow code. 


// activity layout main.xml 
<LinearLayout 
    android:id="@+id/frags" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <ListView 
     android:id="@+id/number_list" 
     android:layout_width="250dip" 
     android:layout_height="match_parent" /> 

    <fragment 
     android:id="@+id/the_frag" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.example.fragmenttest.TestFragment" /> 

</LinearLayout> 

//Fragments java class. 



public class TestFragment extends Fragment 

{ 

    private int nAndroids; 

    public TestFragment() { 

    } 

    /** 
    * Constructor for being created explicitly 
    */ 
    public TestFragment(int nAndroids) { 
     this.nAndroids = nAndroids; 
    } 

    /** 
    * If we are being created with saved state, restore our state 
    */ 
    @Override 
    public void onCreate(Bundle saved) { 
     super.onCreate(saved); 
     if (null != saved) { 
      nAndroids = saved.getInt("nAndroids"); 
     } 
    } 

    /** 
    * Save the number of Androids to be displayed 
    */ 
    @Override 
    public void onSaveInstanceState(Bundle toSave) { 
     toSave.putInt("nAndroids", nAndroids); 
    } 

    /** 
    * Make a grid and fill it with n Androids 
    */ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) { 
     int n; 
     Context c = getActivity().getApplicationContext(); 
     LinearLayout l = new LinearLayout(c); 
     for (n = 0; n < nAndroids; n++) { 
      ImageView i = new ImageView(c); 
      i.setImageResource(R.drawable.android); 
      l.addView(i); 
      TranslateAnimation a = new TranslateAnimation(-50, 30, 0, 0); 
      a.setDuration(1000); 

      l.startAnimation(a); 
      a.setFillAfter(true); 
     } 
     return l; 
    } 
} 

// Activity 


public class FragmentTestActivity extends FragmentActivity implements OnItemClickListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ListView l = (ListView) findViewById(R.id.number_list); 
     ArrayAdapter numbers = new ArrayAdapter<String>(getApplicationContext(), 
       android.R.layout.simple_list_item_1, 
       new String [] { 
      "one", "two", "three", "four", "five", "six" 
     }); 
     l.setAdapter(numbers); 
     l.setOnItemClickListener(this); 
    } 


    /** 
    * Add a Fragment to our stack with n Androids in it 
    */ 
    private void stackAFragment(int nAndroids) { 
     Fragment f = new TestFragment(nAndroids); 

     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.the_frag, f); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 

    /** 
    * Called when a number gets clicked 
    */ 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     stackAFragment(position + 1); 
    } 
} 
+0

मैं इस जबाब एंड्रॉयड परीक्षण से कोई लेना देना नहीं है नहीं लगता कि देखना ढांचा। मन कोड के साथ कुछ स्पष्टीकरण पोस्ट करें? – ernazm

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