2015-05-04 25 views
8
ile bir Android kitaplığının test edilmesi

Bir Android ortamında kullanılabilecek bir kitaplık oluşturdum. Şu anda Düz Eski Groovy Nesneleri içerir, Android bağımlılığı yoktur. Bu POGO'lar için testler sorunsuz çalışır.Robolectric

Kütüphanenin özelliklerini genişletmek için, Android sınıflarından miras alan veya bunları temel alan sınıflar oluşturuyorum, bunları da test etmek istiyorum. Elbette testler kütüphanenin bir parçası olmalı ve kütüphaneyi içeren bir Android uygulama projesinin parçası olarak uygulanmamalıdır.

Bir uygulamanın Robolectric yardımı ile test edilebileceğini biliyorum ve gayet iyi çalışıyor ancak bunun arkasında bir Android uygulaması olmadan bunu kullanma olanağı yok.

Android bağımlılıkları ve Robolectric ile bir kütüphaneyi test etmenin bir yolu var mı?

Android Studio 1.2 kullanıyorum.

+1

Robolectric hangi sürümünü kullanıyorsunuz? Kütüphane projesi için uygulama yapmadan birkaç test yazdım. Ama bu android kütüphane değil sade java (groovy) oldu. Sadece android graper eklentisi ile android.jar varsayılan iadeler ile alay edebilirsiniz gitmek olabilir. Sizin için ne kadar iyi olduğuna emin değilim –

+0

@EugenMartynov En son uygulama için Robolectric 3.0 RC2'yi kullandım, ancak 2.x sürümü ile çalıştım ve bir Android Java kütüphanesi olarak da gayet iyi. Sadece başlamak için bazı temel kurulumlara ihtiyacım var. – EightBitBoy

+3

https://github.com/nenick/AndroidStudioAndRobolectric/tree/library adresinde, robolectric tarafından test edilen bir kütüphane modülü için temel örneği bulabilirsiniz. Proje kurulumunuzla ilgili bazı sorunlarınız var mı? – nenick

cevap

1

Robolectric'un sizin için iyi bir seçim olduğunu düşünüyorum. Örneğin, DialogFragment öğesinden devraldığı bir sınıfı yazdıysanız, doğru davranıp çalışmadığını görebilirsiniz:

@RunWith(RobolectricTestRunner.class) 
public class ProgressDialogFragmentTest { 
private static final String MESSAGE_KEY = "KEY_PROGRESS_MESSAGE"; 
private static final String TEST_MESSAGE = "test message"; 

@Test 
public void argumentsContainExpectedKey() { 
    //given 
    ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE); 

    //when 
    boolean containsExpectedKey = fragment.getArguments().containsKey(MESSAGE_KEY); 

    //then 
    assertTrue(containsExpectedKey); 
} 

@Test 
public void argumentsContainsValidMessage() { 
    //given 
    ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE); 

    //when 
    String actualMessage = fragment.getArguments().getString(MESSAGE_KEY); 

    //then 
    assertEquals(TEST_MESSAGE, actualMessage); 
} 

@Test 
public void createdDialogIsProgressDialog() { 
    //given 
    ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE); 
    FragmentTestUtil.startFragment(fragment); 

    //when 
    Dialog dialog = fragment.getDialog(); 

    //then 
    assertTrue(dialog instanceof ProgressDialog); 
} 

@Test 
public void dialogIsHiddenBeforeRunShowMethod() { 
    //given 
    ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE); 
    FragmentTestUtil.startFragment(fragment); 

    //when 
    ProgressDialog dialog = (ProgressDialog) fragment.onCreateDialog(fragment.getArguments()); 
    boolean showing = dialog.isShowing(); 

    //then 
    assertFalse(showing); 
} 

} 
İlgili konular