2014-11-07 16 views
10

Niedawno zacząłem przyglądać się testom funkcjonalnym za pomocą Appium. Chciałbym uruchomić testy Appium przez studio Android poprzez gradle.Testy Androida z Appium i Gradle

Czy ktoś próbował to zrobić, a jeśli tak, to możesz dać mi jakieś informacje na temat konfiguracji, takich jak jakie zadania Gradle używać itp

mam włączone niezbędne zależności w moim pliku produkcji:

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

mam testu próbki poniżej, po prostu potrzebujemy sposobu prowadzenia go przez 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(); 
    } 
    } 
} 

Odpowiedz

0

Zrobiłem to za pomocą Eclipse przez gradle. Oto krok po kroku opis:

  1. Utwórz plik build.gradle
  2. wspomnieć repoistories (Maven centralny())
  3. wymienić wszystkie zależności projektu w ramach "zależności"
  4. Jeśli chcesz utwórz plik manifestu, który ma cały twój słoik zamiast wymieniać jeden po drugim w ścieżce klas, możesz wymienić wszystkie w jednym miejscu, używając:

    słoik { manifest.attributes ( "Cla p-Ścieżka 'configurations.runtime.files.collect {it.name} .join (' „) ) }

to wszystko. Twoje są dobre, aby przejść.

1

Running to w wierszu poleceń powinien wyglądać przez wszystkich klas w projekcie dla jednego zwanego TrialTest i uruchamiać tylko te testy

gradle -Dtest.single=TrialTest 

Musisz mieć Gradle zadanie o nazwie Test chociaż. Upewnij się, że masz to w swoim pliku build.gradle

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

Wiem, że to bardzo stare pytanie. Ale here jest przykładowym szablonem roboczym do testowania funkcjonalnego systemu Android przy użyciu Appium, który jest w Javie i skonfigurowany do uruchamiania testów za pomocą Gradle.

0

Wygląda na to, że nadal nie ma akceptowanej odpowiedzi. Uruchamianie testów z gradle jest podobne i czyste, tak jak w przypadku używania ich z mavenem. W twojej build.gradle można określić zasoby testowe zawarte w

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

i tam po cmd/shell wykonanie:

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

PS: Co @BenJi zasugerował w poniższych odpowiedzi jest również dobre podejście zdefiniować niestandardowe zadanie do wykonania dowolnego gradle.

Powiązane problemy