用Appium和Gradle进行Androidtesting

我最近开始考虑用Appium做一些functiontesting。 我想通过gradle通过Android工作室运行Appiumtesting。

有没有人试图做到这一点,如果是的话,你可以给我一些关于设置的信息,如使用什么gradle任务等。

我已经在我的构build文件中包含了必要的依赖关系:

androidTestCompile( 'io.appium:Java的客户机:2.0.0')

我有一个下面的示例testing,我只需要通过gradle运行它的方式:)

package com.appium.trial; import junit.framework.Assert; import io.appium.java_client.AppiumDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class TrialTest { private static WebDriver wd; @Before public void setUp() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("appium-version", "1.0"); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("deviceName", "Samsung Galaxy S4 - 4.2.2 - API 17 - 1080x1920"); capabilities.setCapability("app", "/Users/chuckster/Documents/Dev/AppiumTrial/appium-trial.apk"); capabilities.setCapability("appPackage", "com.appium.trial"); capabilities.setCapability("appActivity", "com.appium.trial.TrialTest"); try { wd = new AppiumDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities); } catch (MalformedURLException e) { e.printStackTrace(); } wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); } @Test public static void testThatClickingTheMotorSectionLeadsToSubSection(){ wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[5]/android.widget.TextView[1]")).click(); wd.close(); } @After public void tearDown() { if (wd != null) { wd.quit(); } } } 

在命令行中运行这个命令应该查看项目中的所有类的一个名为TrialTest,并只运行这些testing

 gradle -Dtest.single=TrialTest 

你必须有一个称为testing的gradle任务。 确保你的build.gradle文件中有这个

 test { testLogging{ events 'started', 'passed' } } 

我已经通过gradle使用Eclipse做了这个。 这里是一步一步的描述:

  1. 创build一个build.gradle文件
  2. 提及repoistories(maven central())
  3. 在“依赖关系”下提及您所有的项目依赖关系
  4. 如果你想创build一个清单文件,其中包含所有的jar文件,而不是在classpath中逐一提到,那么你可以在一个地方提到所有这些:

    jar {manifest.attributes('Class-Path':configurations.runtime.files.collect {it.name} .join(''))}

而已。 你很好走。

我知道这是一个非常古老的问题。 但是这里是一个使用Appium的Androidfunctiontesting框架的示例工作模板,它使用Java并且configuration为使用Gradle运行testing。

似乎还没有被接受的答案。 使用gradle运行testing与使用maven运行testing类似且干净。 在你的build.gradle你可以指定包含的testing资源

 sourceSets { ... test { java { srcDirs = ["test/model"] // this specifies directories irrespective of default test directory, could be com/appium/trial in your case } } } 

然后在cmd / shell执行:

 ./gradlew test /* executes @Test as defined under the sourceSets*/ 

PS:在下面的回答中,@BenJi提供了什么build议,也是定义执行任何使用gradle的自定义任务的好方法。