Die Verwendung der folgenden Testframeworks und Testtools wurde evaluiert und geprüft. Weitere gängige Frameworks und Testtools sind in Evaluierung. Bei Fragen zur Verwendung Ihrer favorisierten Testtools
React Native ist ein leistungsstarkes Framework, das die Entwicklung plattformübergreifender mobiler Apps ermöglicht. Mit einer einzigen Codebasis können Entwickler Anwendungen für iOS und Android erstellen, was Zeit und Ressourcen spart.
Die Mobile Device Cloud bietet eine ideale Umgebung, um React Native-Apps auf echten Geräten zu testen und ihre Qualität sicherzustellen.
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.WebElement;
import org.testng.annotations.*;
import org.testng.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class AppiumTest {
private final String CLOUD_ACCESS_KEY = "YOUR_ACCESS_KEY_TO_THE_MOBILE_DEVICE_CLOUD";
private final String APP_PACKAGE = "com.reactnative_helloworld_native"; // Exchange this with cloud id of your app
private final String APP_ACTIVITY = ".MainActivity"; // Exchange this with main activity of your app
private AndroidDriver driver;
DesiredCapabilities dc = new DesiredCapabilities();
@BeforeTest
public void setUp() throws Exception {
dc.setCapability("testName", "Quick Start Android React Native Demo");
dc.setCapability("automationName", "UiAutomator2");
dc.setCapability("accessKey", CLOUD_ACCESS_KEY);
dc.setCapability("deviceQuery", "@os='android' and @category='PHONE'");
dc.setCapability(MobileCapabilityType.APP, "cloud:" + APP_PACKAGE + "/" + APP_ACTIVITY);
dc.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, APP_PACKAGE);
dc.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, APP_ACTIVITY);
dc.setCapability("appiumVersion", "2.2.2");
driver = new AndroidDriver(new URL("https://mobiledevicecloud.t-systems-mms.eu/wd/hub"), dc);
}
@Test
public void testCounterAndReset() {
WebElement counterElement = driver.findElement(By.xpath("//android.widget.TextView[@text='0']"));
Assert.assertEquals(counterElement.getText(), "0", "Initial counter value should be 0");
WebElement incrementButton = driver.findElement(By.xpath("//android.widget.TextView[@text='+']"));
incrementButton.click();
counterElement = driver.findElement(By.xpath("//android.widget.TextView[@text='1']"));
Assert.assertEquals(counterElement.getText(), "1", "Counter should be incremented to 1");
WebElement resetButton = driver.findElement(By.xpath("//android.widget.TextView[@text='↺']"));
resetButton.click();
counterElement = driver.findElement(By.xpath("//android.widget.TextView[@text='0']"));
Assert.assertEquals(counterElement.getText(), "0", "Counter should be reset to 0");
Assert.assertFalse(resetButton.isEnabled(), "Reset button should be disabled when counter is 0");
}
@AfterTest
public void tearDown() {
if (driver != null) {
System.out.println("Report URL: "+ driver.getCapabilities().getCapability("reportUrl"));
driver.quit();
}
}
}
1.
2.
3.
4.
Folgen Sie dazu den
Beachten Sie bitte auch die Konfiguration zur Verbindung zu unserer Mobile Device Cloud API. Eine beispielhafte Konfiguration ist im oberen Coebeispiel unter der @BeforeTest-Annotation zu finden.
Schreiben Sie nun Ihre React Native App, wenn nicht bereits getan, und bauen Sie dann die Debug-APK bzw. -IPA.
Android:
npx react-native run-android --variant=debug
iOS:
npx react-native run-ios --configuration Debug
Laden Sie nun die aus dem vorrausgegangenen Schritt entstandene Anwendung (APK bzw. IPA) in die Mobile Device Cloud hoch. Genauere Informationen dazu finden Sie
Geben Sie nun dem Appium-Treiber die Bundle-ID Ihrer App mit, um sie automatisch zu starten:
dc.setCapability(MobileCapabilityType.APP, "cloud:");
Verwenden Sie die Methoden des Appium-Treibers, um Ihre App zu automatisiert zu testen:
findElement(...)
sendKeys(...)
hideKeyboard()
rotate(...)
...
Orientieren Sie sich am Beispiel oben.