Réouverture de l'application fraîchement via appium java script pour le prochain Testcase


J'exécute le script java appium avec succès.Mais le problème est que mon application commence par la page de connexion.après m'être connecté, j'ai pu automatiser certains cas de test.Mais je veux revenir de la page de connexion via le script pour exécuter le prochain cas de test. .Comment puis-je fermer l'application et également à partir du mode d'arrière-plan et rouvrir l'application sans réinstaller l'application à nouveau?parce que les cas de test ne doivent pas dépendre les uns des autres

public class AppTest {

    private static RemoteWebDriver driver;

    @BeforeClass
    public static void initSimulator() throws MalformedURLException
    {
            DesiredCapabilities capabilities = new DesiredCapabilities();

            capabilities.setCapability("platformName", "Android");            
            capabilities.setCapability("platformVersion", "5.0.1");           
            capabilities.setCapability("deviceName", "emulator-5554");                
            capabilities.setCapability("app", "D:\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools\\Yr.apk");    
            capabilities.setCapability("app-package", "com.you.android");                   
            capabilities.setCapability("app-activity", "com.yr.sts.SplashActivity");                  
            capabilities.setCapability("app_wait_activity",".MainActivity");

            driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),
                capabilities);

            System.out.println("App Launched");
    }
    @AfterClass
    public static void quitDriver() 
    {
       driver.quit();
       System.out.println("Driver has been Quit");
    }

    @Test
    public void sign_in_Click() throws InterruptedException 
    {
        WebElement sign_button = driver.findElement(By.name("Sign-in"));
        sign_button.click();
        WebElement usr = driver.findElement(By.id("com.you.android:id/et_login_email_or_mobile"));
        usr.sendKeys("[email protected]");
        Thread.sleep(2000);
        WebElement passwrd = driver.findElement(By.id("com.you.android:id/et_login_pwd"));
        passwrd.sendKeys("123456789");
        Thread.sleep(2000);
        driver.findElementByName("Sign in").click();
        Thread.sleep(5000);
        assertTrue( true );
    }
    @Test
    public void second_sign_in_Click() throws InterruptedException 
    {    
        //HERE I WANT TO REOPEN THE APPLICATION WITH SIGN IN  AFTER CLOSING APP.BECAUSE IN 1st TESTCASE , I HAVE SIGNED IN.this is a 2nd test case    
    }
}
Author: kiedysktos, 2015-06-08

1 answers

Modifier @Beforeclass et @AfterClass balises de @Before et @Après respectivement.

En ce moment, votre méthode initSimulator() sera appelée avant chaque @Test, et la méthode quitDriver() sera appelée après. De cette façon, vous aurez un nouveau pilote (avec une application claire) redémarré chaque cas.

Donc - comme vous le voyez - dans JUnit chaque cas de test est indépendant par défaut.

Pourquoi votre problème est-il survenu? De la @BeforeClass docs:

Parfois, plusieurs tests doivent partager une configuration coûteuse en calcul (comme se connecter à une base de données). Bien que cela puisse compromettre le indépendance des tests, parfois c'est une optimisation nécessaire. Annoter une méthode no-arg vide statique publique avec @BeforeClass provoque il doit être exécuté une fois avant l'une des méthodes de test de la classe.

BTW, ma méthode initDriver () ressemble à ceci, c'est une meilleure façon de gérer la sortie du pilote:

   public void quitDriver() {
        driver.closeApp();
        driver.quit();
        driver = null;
    }

(c'est statique dans votre cas)

 2
Author: kiedysktos, 2015-06-16 12:33:50