1
resposta

Singleton Android e iOS

Olá Professor Ricardo, boa tarde. E se eu fosse aplicar o singleton para ambas as plataformas, como ficaria o método? Tentei de algumas formas, onde crio métodos separados para chamar o getAndroid e getIos, e quando eles são chamados no teste, através da classe Hooks (implementei o cucumber no meu projeto), usei a tag @Before("android") e @Before("ios"), mas em algum momento o driver se perde e fica nulo. Poderia criar uma aula/acrescentar no projeto o singleton com ambas as plataformas?

1 resposta

Olá Lucas, boa tarde!

Entendo que você está enfrentando dificuldades ao aplicar o padrão Singleton para ambas as plataformas (Android e iOS) em seu projeto com Appium.

Uma possível abordagem para implementar o Singleton seria criar uma classe chamada "DriverManager" que será responsável por gerenciar a instância única do driver para cada plataforma. Essa classe pode ter métodos como "getAndroidDriver" e "getIOSDriver" que retornam a instância do driver correspondente.

Por exemplo, na classe Hooks, você pode utilizar a anotação @Before para inicializar o driver de acordo com a plataforma desejada. Algo como:

@Before("@android")
public void setUpAndroid() {
    AppiumDriver<MobileElement> androidDriver = DriverManager.getAndroidDriver();
    // Restante do código de inicialização do driver Android
}

@Before("@ios")
public void setUpIOS() {
    AppiumDriver<MobileElement> iosDriver = DriverManager.getIOSDriver();
    // Restante do código de inicialização do driver iOS
}

Dessa forma, você garante que cada plataforma terá uma única instância do driver, evitando problemas de perda de referência.

No entanto, é importante ressaltar que essa é apenas uma sugestão de implementação e pode variar de acordo com a estrutura do seu projeto. Recomendo que você adapte essa abordagem de acordo com as necessidades específicas do seu caso.

Espero ter ajudado e bons estudos!