Robotium BDD with Cucumber

孤人 提交于 2019-12-14 02:32:23

问题


I want to know if you guys know how to make BDD tests with Robotium.

As I research Robotium works with a different Virtual Machine (Dalvik) so I cannot run as Junit Test (Only with Android Junit Test). So I found a possible solution to run Robotium with Junit with RoboRemote https://github.com/groupon/robo-remote. But when i tried to integrate with cucumber the tests became unstable.

So you guys know some way to make BDD tests using Robotium?


回答1:


I have successfully integrated Robotium using Cucumber-JVM for Android.

For information about the now official cucumber-android module for Cucumber-JVM and the installation, have a look here. You can also find API-documentation and examples about Cucumber-JVM here: http://cukes.info/platforms.html.

In your test-module for your app, simply add the Robotium Solo jar-file as a dependency (Scope: Compile).

One of my test-classes looks like this:

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
  }
}

I hope this is enough information for anyone to get started. When this question was asked, cucumber-android didn't exist yet. Keep in mind though, GUI tests are very often somewhat unstable! I managed to get a stable set of tests locally, but e.g. in Jenkins, usually some tests fail for unknown reasons.




回答2:


I know it's a very old questions but the documentation on this subject is very limited so I'll post another piece of information.

This article helped me a lot: http://www.opencredo.com/2014/01/28/cucumber-android-vs-cucumber-appium/

And I used the documentation here as well (I know it's deprecated but the main project has no docs about android at all): https://github.com/mfellner/cucumber-android.

I got it to work with IntelliJ 13 Community Edition and Maven using bits from Android Bootstrap - http://www.androidbootstrap.com/ (Mostly the Maven integration test project configuration)

Hope it helps.




回答3:


I got working robotium with cucumber-jvm and androidstudio using this runner:

   import android.os.Bundle;

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


   @CucumberOptions(features = {"features"}, tags = {"@smoke",
   "~@pending", "~@manual", "~@reboot"})

   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();
       }
   }


来源:https://stackoverflow.com/questions/14280233/robotium-bdd-with-cucumber

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!