Posts Tagged Android

Robotium ile Test Yazmak

Robotium test framework’ü sayesinde fonksiyonel testler yazmak çok kolaylaşıyor. “Selenium gibi, ama Android için” sloganını kullanan framework, test case’lerinizde kullanıcı ile etkileşim gerektiren kısımları otomatik hale getirmenize yarıyor.

Örnek vermek gerekirse, uygulamanızın login ekranında “Gönder” düğmesine tıkla, “Şifre” kutucuğuna “123456″ gir ve ekranda “Hatalı Şifre” kelimesi geçmediğinden emin ol gibi kontrolleri içeren bir test case’i Robotium kullanarak şöyle yazıyorsunuz:

public void testLogin() throws Exception {
        solo.clickOnButton("Gönder");
        solo.enterText(1, "123456");
        assertFalse(solo.searchText("Hatalı Şifre"));
} 

Bu testler Emulator üzerinde çalıştırıldığı için otomatik hale getirdiğiniz hareketleri gözünüzle görebiliyorsunuz. Yazdığınız testlerin geçip geçmediğini Eclipse’in JUnit ekranından takip edebiliyorsunuz.

robotium

Uygulamanızı Robotium ile test edebilmek için ana projenizin AndroidManifest.xml dosyasına aşağıdaki satırı eklemeniz gerekiyor:

<uses-permission android:name=”android.permission.GET_TASKS” />

Test projesinin Build Path‘ine robotium-solo-1.x.x.jar dosyasını ekledikten sonra ActivityInstrumentationTestCase2 class’ını extend eden bir test case yazmalısınız. Örnek bir test projesi görmek istiyorsanız Robotium’un Getting Started sayfasına bakmanızı öneririm. Hazırladığınız test case’i çalıştırmak için Eclipse’de projenize sağ tıklayarak “Run as Android JUnit Test” demeniz gerekiyor.

Test yazmayı kolay ve eğlenceli bir hale getiren Robotium test framework’ünü denemenizi şiddetle öneriyorum.

, , , ,

1 Comment

Android Geliştirme İpuçları (I)

Android platformunda geliştirme yaparken hayatımı kolaylaştıran ipuçlarını buradan paylaşacağım. İşte ilk ipucu:

1. Google Code Search ile Android Kaynak Kodunu İnceleyin
Tecrübeli yazılımcıların dahil olduğu açık kaynak projelerin kodlarını incelemek bana keyif veriyor, çünkü başkaları tarafından yazılmış kodları okurken farklı düşünme biçimlerini görerek kendimi geliştirme fırsatı buluyorum.

Android platformu açık kaynak olmasına rağmen kaynak koduna erişmek oldukça zahmetli. Bu noktada imdadıma Google Code Search geliyor, kaynak kodunu görmek istediğim class’ı classadı package:android şeklinde aratıyorum.

Mesela AsyncTask class’ının işleyişini merak ediyordum, asynctask package:android şeklinde aratarak AsyncTask.java kaynak kodunu incelediğimde içerisinde LinkedBlockingQueue kullanıldığını gördüm.

Başka bir kullanım alanı ise nasıl çağıracağınızı bilmediğiniz fonksiyonların örnek kullanımını görmek için: Mesela ConnectivityManager‘ın requestRouteToHost metodu argüman olarak integer cinsinden bir hostname istiyordu. hostname’i nasıl integer’a çevireceğim konusunda dökümantasyon da açıklayıcı olmayınca, Code Search üzerinden requestRouteToHost şeklinde arama yaparak örnek bir kullanım buldum.

BONUS: Stackoverflow bildiğiniz gibi Android için resmi destek kanallarından birisi. Daha önce kullanmadığım bir class’ı kullanacaksam öncelikle classadı [android] şeklinde android olarak taglenmiş başlıklar arasında arama yaparak insanların neler yapmaya çalıştığını, ne sorunlarla karşılaştığını inceliyorum.

Siz de yorumlarda kendi ipuçlarınızı paylaşırsanız sevinirim.

, , , ,

No Comments

Samsung i7500 Driver Kurulumu

Samsung i7500 (Galaxy) Android cihazını bilgisayarınıza tanıtarak geliştirdiğiniz uygulamaları bu cihaz üzerinde test etmek için gerekli kurulum adımlarından bahsedeceğim.

Kullandığım cihaz üzerinde Android SDK 1.5 kurulu (Settings > About Phone > Firmware version), bilgisayarımda ise 32-bit Windows XP ve Android SDK ile beraber gelen USB Driver package, revision 2 yüklü. Farklı bir konfigürasyona sahipseniz anlatacaklarım sizin için geçerli olmayabilir.

yazi0

Adım 1: Samsung’un sitesinden telefonun driverlarını içeren Samsung New PC Studio uygulamasını indirip kurun.

Adım 2: Telefonunuzun ayarlarına girerek aşağıdaki kontrol edin:

  • Settings > Applications > Development > USB Debugging kutucuğu işaretli olsun
  • Settings > About phone > Additional Settings > Mass store only kutucuğu işaretli olmasın

Adım 3: Bilgisayarınızdaki Android SDK dizininin içerisinde usb_driver klasöründe bulunan android_winusb.inf dosyasını text editörü ile açın.

32-bit işletim sistemi kullanıyorsanız [Google.NTx86] kısmının en altına, 64-bit işletim sistemi kullanıyorsanız [Google.NTamd64] kısmının en altına aşağıdaki satırları ekleyin:

; Samsung galaxy
%CompositeAdbInterface% = USB_Install, USB\VID_04E8&PID_6640&MI_00
%SingleBootLoaderInterface% = USB_Install, USB\VID_04E8&PID_6640&MI_04

Adım 4: Telefonu USB kablosu aracılığı ile bilgisayarınıza bağlayın.  Windows’da Start > Run > devmgmt.msc yazarak Device Manager‘ı çalıştırın.

yazi1

Unknown device’ın üzerine sağ tıklayarak Update Driver‘ı seçin. Çıkan menülerden sırayla No, not this time ve Install from a list or specific location (Advanced) seçeneklerini seçin. Daha sonra Android SDK dizininin altındaki usb_driver klasörünü seçerek Next diyebilirsiniz.

yazi4

Bu aşamadan sonra Android Bootloader Interface yüklenecektir. Artık komut satırında adb devices dediğinizde (öncelikle adb kill-server demeniz gerekebilir) cihazını görebiliyor olmalısınız. Farklı konfigürasyonlar için kendi tecrübelerinizi yorumlarda paylaşırsanız sevinirim.

, , , , , ,

1 Comment