2013-01-11 5 views
1

Robotium으로 BDD 테스트를 수행하는 방법을 알고 있는지 알고 싶습니다.Robotium BDD with Cucumber

Robotium이 다른 가상 머신 (Dalvik)과 함께 작동하므로 Junit 테스트 (Android Junit 테스트에서만)로 실행할 수 없습니다. 그래서 나는 RoboRemote https://github.com/groupon/robo-remote으로 Junit으로 Robotium을 실행할 수있는 가능한 해결책을 찾았습니다. 그러나 오이와 통합하려고 할 때 시험이 불안정 해졌습니다.

Robotium을 사용하여 BDD 테스트를 수행하는 방법을 알고 계실까요?

+0

당신이 나에게보다 조금 더 많은 정보를 제공 할 수 있습니다 어떤면에서 불안정한가? 그들은 추락합니까? 그들은 많이 실패합니까? 가능한 한 더 많은 정보를 주시면 도와 드리겠습니다. 당신이 이런 식으로가는 경우 참고로 https://github.com/calabash-driver/calabash-driver에서 봐야 할 것입니다 –

답변

2

Android 용 Cucumber-JVM을 사용하여 Robotium을 성공적으로 통합했습니다.

이제는 오이 - JVM 용 공식 cucumber-android 모듈과 설치에 대한 정보는 have a look here입니다. Cucumber-JVM에 대한 API 문서 및 예제는 http://cukes.info/platforms.html에서 찾을 수 있습니다.

앱의 테스트 모듈에 Robotium 솔로 jar 파일을 종속성 (범위 : 컴파일)으로 추가하기 만하면됩니다. 내 테스트 클래스의

하나는 다음과 같습니다

public class CucumberSteps extends ActivityInstrumentationTestCase2<YourActivity> { 

    private Solo solo; 

    public CucumberSteps() { 
    super(YourActivity.class); 
    } 

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

    @Before 
    public void before() { 
    solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    @After 
    public void after() throws Throwable { 
    //clean up 
    solo.finalize(); 
    } 

    @Override 
    protected void tearDown() throws Exception { 
    solo.finishOpenedActivities(); 
    super.tearDown(); 
    } 

    @Given("^step_given_description$") 
    public void step_given_description() throws Throwable { 
    final View testView = solo.getView(R.id.testView); 
    solo.waitForView(testView); 
    solo.clickOnView(testView); 
    // and so on 
    } 
} 

나는이 사람이 시작하는 충분한 정보를 바랍니다. 이 질문이 제기되었을 때, 오이 - 안드로이드는 아직 존재하지 않았습니다. 하지만 GUI 테스트는 매우 불안정합니다. 나는 안정적으로 일련의 테스트를 로컬에서 수행 할 수 있었다. Jenkins에서는 대개 일부 테스트가 알려지지 않은 이유로 실패합니다.

+0

안녕하세요, Blacklight, 안드로이드로 어떻게 오이를 실행했는지 말해 줄 수 있습니까? 우리는 오이 + 안드로이드 + 메이븐을 통합하려하지만, 클래스가 없기 때문에 항상 실패합니다. maven은 오이 런너 클래스를 찾을 수 없습니다 (보통 instumentation 테스트에서는 잘 작동합니다). 우리 좀 도와 줄수있어 ? – Karoly

1

나는 아주 오래된 질문이지만이 주제에 관한 문서는 매우 제한적이므로 다른 정보를 게시 할 것입니다.

이 문서

나에게 많은 도움이 : http://www.opencredo.com/2014/01/28/cucumber-android-vs-cucumber-appium/

을 그리고 나는 (내가이되지 않는 것을 알고 있지만, 주요 프로젝트에서 모든 안드로이드에 대한 어떠한 문서가 없습니다)뿐만 아니라 여기에 설명서를 사용 : https://github.com/mfellner/cucumber-android을. http://www.androidbootstrap.com/ (주로 메이븐 통합 테스트 프로젝트 구성)

는 희망이 도움이 -

나는 안드로이드 부트 스트랩에서 인 IntelliJ (13) 커뮤니티 에디션과 Maven을 이용하여 비트 작업을 얻었다.

0

나는 오이 JVM과 robotium 작업있어 및 안드로이드 스튜디오는이 주자 사용 '? 불안정'

import android.os.Bundle; 

    import cucumber.api.CucumberOptions; import 
    cucumber.api.android.CucumberInstrumentation; 


    @CucumberOptions(features = {"features"}, tags = {"@smoke", 
    "[email protected]", "[email protected]", "[email protected]"}) 

    public class Instrumentation extends CucumberInstrumentation { 

     private final CucumberInstrumentation instrumentationCore = new CucumberInstrumentation(); 

     @Override 
     public void onCreate(final Bundle bundle) { 
      super.onCreate(bundle); 
      instrumentationCore.onCreate(bundle); 
      start(); 
     } 

     @Override 
     public void onStart() { 
      waitForIdleSync(); 
      instrumentationCore.start(); 
     } 
    }