분류없음2015.04.02 14:30


http://groups.google.com/group/calabash-android

Installation

필수

  • Ruby가 필수로 깔려 있어야 함. ruby -v를 터미널에서 실행해볼것. 윈도우에서는  RubyInstaller.org <- 여기에서 다운로드하여 설치
  • 안드로이드 SDK필수이며 ANDROID_HOME 환경변수에 압축이 풀린 SDK폴더위치를 가리키도록 해야 한다.
  • ANT도 필수로 설치되어야한다. https://ant.apache.org/bindownload.cgi 에서 설치할 수 있다.

설치

  • sudo gem install calabach-android


Ruby API

테스트 단계를 작성할 때 Ruby API로 애플리케이션과 연동함.

여기서는 high-level의 API에 대해서만 설명할것이며 더 자세한 내용을 보려면 https://github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android 를 참조할것.

calabash android는 client-server 구조이다. Calabash Ruby API는 테스트서버와 HTTP로 통신하는 client side이며 서버는 앱과 함께 단말에서 동작한다. Calabash Android의 아키텍쳐가 궁금하면 다음 포스트를 참조해라.

AN OVERVIEW OF CALABASH ANDROID


일반적인 사항

start_test_server_in_background

테스트서버와 앱이 테스트에 진입(app under test:AUT)한다. 앱이 이미 실행중이면 restart한다.

reinstall_apps

테스트서버와 AUT를 새버전으로 설치한다. 


질의(Query)

query(uiquery, * args)

query는 그 결과를 array로 반환한다. 뷰나 다른 애븦리케이션 객체들을 찾아내고 유효성을 체크하거나 데이터를 추출해낼 수 있다. view객체의 경우 좌표, 클래스 그리고 컨텐츠디스크립션등을 반환한다.

irb(main):002:0> query("button index:1")

=> [{"id"=>"save", "enabled"=>true, "contentDescription"=>nil, "class"=>"android.widget.Button", "text"=>"Save", "rect"=>{"center_y"=>724.0, "center_x"=>645.5, "height"=>64, "y"=>692, "width"=>71, "x"=>610}, "description"=>"android.widget.Button{4267b4a0 VFED..C. ........ 497,243-568,307 #7f070023 app:id/save}"}] 

뷰는 hash로 표현되며 따라서 아래와 같은 결과를 볼수 있다.

irb(main):003:0> query("button index:1").first.keys 

=> ["id", "enabled", "contentDescription", "class", "text", "rect", "description"] 

*args 파라메터는 쿼리결과에 메소드를 수행할 수 있게 한다.

irb(main):005:0> query("button", "text")

=> ["Optional Settings", "Save", "Cancel", "Get a free blog at WordPress.com"]

이는 getter 메소드를 호출하게 되는데 text(), getText() 또는 isText()가 해당되며 뷰내의 버든들에 대해 수행된다. 연속으로 호출도 가능하다.

irb(main):007:0> query("button", "text", "length")

=> [17, 4, 6, 32]

irb(main):008:0> query("button", "text", "toLowerCase")

=> ["optional settings", "save", "cancel", "get a free blog at wordpress.com"]

인자가 필요한 경우 해시를 사용할 수 있다.

irb(main):033:0> query("edittext index:1", setText:"1234")

=> ["<VOID>"] 

Ruby 1.0에서는 key:val형식이 사용 불가하며 아래와 같이 사용해야 한다.

irb(main):033:0> query("edittext index:1", setText => "1234")

=> ["<VOID>"] 

쿼리 조건에 맞는 뮤들에 대해서 setTex 메소드가 "1234"인자와 함께 실행될것이다.

<VOID>는 자바 메소드가 void를 반환함을 의미한다.


Waiting

wait_for(options, &block)

특정 상태가 발생할때까지 대기한다. 옵션을 hash로 지정하면 블럭이 반복적으로 호출된다.

....







Posted by 삼스