1

我想知道你们是否知道如何使用 Robotium 进行 BDD 测试。

当我研究 Robotium 使用不同的虚拟机(Dalvik)时,我不能作为 Junit Test 运行(仅使用 Android Junit Test)。所以我找到了一个可能的解决方案,用 Junit 和 RoboRemote https://github.com/groupon/robo-remote运行 Robotium 。但是当我尝试与黄瓜集成时,测试变得不稳定。

所以你们知道一些使用 Robotium 进行 BDD 测试的方法吗?

4

3 回答 3

2

我已经使用 Cucumber-JVM for Android 成功集成了 Robotium。

有关cucumber-androidCucumber-JVM 的现在官方模块和安装的信息,请查看此处。您还可以在此处找到有关 Cucumber-JVM 的 API 文档和示例:http: //cukes.info/platforms.html

在您的应用程序的测试模块中,只需将Robotium Solo 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
  }
}

我希望这是足以让任何人开始的信息。当被问到这个问题时,cucumber-android 还不存在。但请记住,GUI 测试通常有些不稳定!我设法在本地获得了一组稳定的测试,但例如在 Jenkins 中,通常一些测试由于未知原因而失败。

于 2013-11-12T21:50:56.297 回答
1

我知道这是一个非常古老的问题,但是关于这个主题的文档非常有限,所以我会发布另一条信息。

这篇文章对我帮助很大:http ://www.opencredo.com/2014/01/28/cucumber-android-vs-cucumber-appium/

我也在这里使用了文档(我知道它已被弃用,但主项目根本没有关于 android 的文档):https ://github.com/mfellner/cucumber-android 。

我使用来自 Android Bootstrap 的位 - http://www.androidbootstrap.com/(主要是 Maven 集成测试项目配置)让它与 IntelliJ 13 社区版和 Maven 一起工作

希望能帮助到你。

于 2014-02-16T14:09:35.820 回答
0

我使用这个运行器与 cucumber-jvm 和 androidstudio 一起工作:

   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();
       }
   }
于 2015-09-29T09:02:26.373 回答