使用Appium和Gradle进行Android测试

11

我最近开始研究使用 Appium 进行一些功能性测试。我想通过 gradle 在 Android Studio 中运行 Appium 测试。

是否有人尝试过这样做,如果是,您能否提供一些设置信息,例如要使用哪些 gradle 任务等。

我已在我的构建文件中包含了必要的依赖项:

androidTestCompile('io.appium:java-client:2.0.0')

下面是一个示例测试,我只需要一种通过 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();
    }
    }
}
4个回答

2
在命令行中运行此命令将查找您项目中所有的类中名为 "TrialTest" 的测试并仅运行这些测试。
gradle -Dtest.single=TrialTest

你需要有一个名为“test”的Gradle任务。确保在你的build.gradle文件中有这个任务。
test {
    testLogging{
        events 'started', 'passed'
    }
}

0

看起来还没有被接受的答案。使用Gradle运行测试与使用Maven运行测试类似且干净。在您的build.gradle中,您可以指定包含在测试资源中的内容。

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在下面的答案中提出的建议也是使用Gradle定义自定义任务执行任何操作的好方法。

0

我知道这是一个非常老的问题。但这里有一个使用Appium的Android功能测试框架的样本工作模板,它是用Java编写的,并配置为使用Gradle运行测试。


0

我使用Eclipse和gradle完成了这个任务。以下是逐步说明:

  1. 创建一个build.gradle文件
  2. 在“repositories”中提及仓库(maven central())
  3. 在“dependencies”下提及所有项目依赖项
  4. 如果你想创建一个包含所有jar文件的清单文件,而不是在类路径中逐个提及它们,你可以使用以下方法将它们全部放在一个地方:

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

就这样,你可以开始了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接