2012-11-04 19 views
6

Benim FragmentActivity aramalar getActionBar() döndürür: emülatörü veya bir cihazda normalde uygulamayı çalıştırırkenActivityUnitTestCase getActionBar() <code>onCreate()</code> null

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_new_expense); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
} 

Bu iyi çalışır. Ancak, Etkinliği ActivityUnitTestCase ile test ettiğimde, getActionBar() her zaman null değerini döndürür.

public class NewTransactionTest extends ActivityUnitTestCase<TransactionEditActivity> { 

    private RenamingDelegatingContext myContext; 
    private DatabaseHelper myHelper; 
    private RuntimeExceptionDao<Account,Long> myDao; 
    private Account myBankAccount1; 
    private Account myBankAccount2; 
    private Account myCategory1; 
    private Account myCategory2; 
    private Budget myBudget; 

    public NewTransactionTest() { 
     super(TransactionEditActivity.class); 
    } 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 

     myContext = new RenamingDelegatingContext(getInstrumentation().getTargetContext(), "test"); 
     myContext.deleteDatabase(DatabaseHelper.DATABASE_NAME); 
    } 

    @UiThreadTest 
    public void testPreConditions() throws Throwable { 
     setActivityContext(myContext); 
     final TransactionEditActivity activity = startActivity(new Intent(), null, null); 
    } 
getActionBar() döner ünite testleri için boş niçin

bilen var mı?

cevap

2

Bu tasarımın bir parçasıdır. Bunun yerine ActivityInstrumentationTestCase2 kullanmayı denediniz mi? Çalışacağına dair bir garanti yok, ama daha iyi bir şans var. ActivityInstrumentationTestCase2 içinde kullanabileceğiniz İçerik daha fazla özelliği desteklemektedir.

Android'de gerçek birim testi yapmak zordur. Özellikle Etkinlikler için, kendinizi "aldatmaya" izin vermeli ve bunun yerine işlevsel testler yapmalısınız.

+0

Android'de birim testinin gerçekten iyi çalışmadığına dair ifadenizi kabul ediyorum. Ben gerçekten veritabanı içeriğini testten kontrol etmek istiyorum, 'ActivityInstrumentationTestCase2' ile 'RenamingDelegatingContext' kullanmak mümkün mü? – Nathan

İlgili konular