Estoy enfrentando un problema al escribir casos de prueba de UI para IOS usando el marco XCTest.
Considere un proceso de registro de 3 pasos y 3 casos de prueba para cada paso. Y para ejecutar cada caso de prueba, es necesario cerrar la sesión del usuario. Entonces, he escrito el código como

test1(){
    //some code here for step 1
}

test2(){
    test1()
    //some code here for step 2
}

test3(){
    test2()
    //some code here for step 3
}

Esto funciona bien mientras se ejecutan los casos de prueba individualmente. Pero cuando se ejecuta colectivamente, la primera prueba se ejecuta con éxito pero la segunda prueba falla, ya que requiere que el usuario registrado cierre la sesión antes de ejecutar el texto. Ahora para resolver esto, escribo el código de la siguiente manera:

test1(){
    //some code here for step 1
    //logout code
}

test2(){
    test1()
    //some code here for step 2
    //logout code
}

test3(){
    test2()
    //some code here for step 3
    //logout code
}

Ahora el problema es que, mientras se ejecuta el segundo caso de prueba, llama a la primera función que cierra la sesión del usuario y no podemos reutilizar el código. ¿Alguna mejor manera de hacer esto?

1
Deepak Terse 23 feb. 2018 a las 15:51

2 respuestas

La mejor respuesta

Si seguro. No llame a funciones de prueba desde otra función de prueba, pero cree nuevas funciones para acciones, como esta:

private func action1() {
    //some code here for step 1
}

private func action2() {
    action1()
    //some code here for step 2
}

private func action3() {
    action2()
    //some code here for step 3
}

private func logoutAction() {
    //logout code
}

Luego, en sus pruebas, llame a esas funciones de acción, así:

func test1() {
    action1()
    logoutAction()
}

func test2() {
    action2()
    logoutAction()
}

func test3() {
    action3()
    logoutAction()
}
2
lagoman 23 feb. 2018 a las 14:24

Debe utilizar setup() y tearDown() métodos de XCTest para restablecer el estado de su aplicación.

Además, no llame a una prueba de otra. Cada prueba debe configurarse por sí misma y no depender de otras pruebas. Si hay una funcionalidad común entre las pruebas, puede crear una función en su clase de prueba a la que llame desde cada prueba.

2
Hodson 23 feb. 2018 a las 14:44