unit test ios iphone xcode xcode7 xcode-ui-testing

ios - unit - Xcode 7 UI Tests, el botón de grabación está atenuado



ios unit testing (15)

Asegúrese de tener solo una subclase de XCTestCase por archivo. Desea que el nombre de archivo y los nombres de clase coincidan.

En mi experiencia, incluso cuando tiene pruebas de interfaz de usuario funcionando, si agrega una nueva subclase de su subclase XCTestCase de trabajo en el mismo archivo, el botón de grabación se desactivará (aunque todas las demás IU de prueba continuarán funcionando).

Estoy tratando de agregar pruebas de UI a mi proyecto existente utilizando Xcode 7. Sin embargo, el botón de grabación de prueba de UI siempre está en gris. ¿Qué me estoy perdiendo aquí?

Intenté reiniciar Xcode, limpiar y reconstruir el proyecto y agregar un nuevo objetivo de prueba de UI. ¿Alguien más experimenta el mismo comportamiento?


Debes importar la clase de vista que quieras probar. Luego ponga el cursor en el método de prueba.


Esto es un poco tonto, pero lo perdí en algunos artículos que leí.

Asegúrate de tener un objetivo de UITesting, un objetivo de prueba regular no lo hizo por mí.


FWIW: Tuve este problema y resultó que estaba intentando ejecutar el simulador en el sistema operativo incorrecto.

Estaba tratando de usar iOS8.x, y la UITesting solo funciona en iOS9 +.

Cambia la versión del simulador y aparece el botón de grabación.


He encontrado otra solución que no he visto aquí.

Si está subclasificando XCTestCase , cambie su clase para heredar de eso nuevamente, guarde el archivo , vuelva a cambiarlo a su nombre de subclase. No es necesario limpiar o construir.

Para mi proyecto tengo una sub-base de XCTestCase , llamémoslo APPMyTestCase . A menudo encuentro que el botón de grabación está atenuado y, a veces, los pequeños botones verde / rojo junto a cada método de prueba tampoco parecen poder ejecutarlos individualmente. Si vuelvo a cambiar mi subclase a XCTestCase por un segundo, todo volverá a funcionar.

Cambia esto:

class APPLoadingPageUITests: APPMyTestCase { // tests here }

A esto:

class APPLoadingPageUITests: XCTestCase { // tests here }

Y luego volvemos a esto:

class APPLoadingPageUITests: APPMyTestCase { // tests here }

Esto me lo arregló.


Hice algunas cosas para habilitar mi botón de grabación:

  1. (Opcional, Recomendado): elimine todos los esquemas de PRUEBA y objetivos de PRUEBA para su proyecto, comience de nuevo creando un nuevo Objetivo de UITest.
  2. Asegúrese de que el esquema de UITest y el esquema de ejecución del proyecto principal apunten al mismo objetivo.
  3. Intente eliminar sus otros esquemas de UITest si pueden ser fácilmente recreados / no son de importancia absoluta.
  4. Producto> (Mantener presionada la tecla ALT)> Limpiar carpeta de compilación
  5. Producto> Limpio (solo por medida segura)
  6. Cerrar proyecto, salir de Xcode.
  7. Salir del simulador.
  8. Finalmente, vuelve a abrir Xcode, carga tu proyecto. Navegue a su archivo de UITest y el pequeño botón rojo de la alegría debe estar disponible para su uso.

Además, asegúrese de que su objetivo de compilación / ejecución esté configurado para iPhone X 9.X.


Inmediatamente volvió cuando cambié al esquema correcto. Asegúrese de estar en el esquema de UI testing , ya que la grabadora de prueba de UI no puede funcionar en ninguna otra.


Me quedé atrapado en esto por un tiempo también. Para grabar, debes estar en una clase que Xcode reconozca como que contiene pruebas. Agrega un archivo a tu objetivo de prueba de UI con algo como:

import Foundation import XCTest class MyTests: XCTestCase { func testSomething() { } }

Guarde el archivo, limpie su proyecto y cambie a otro archivo y luego vuelva a este. El botón Grabar debería estar disponible entonces.


Para habilitar el botón rojo, debe tener el cursor en el método de prueba:


Para mí, el problema fue que el panel "Editor de versiones" estaba abierto. Tan pronto como volví al Asistente de Editor, funcionó.


Por tonto que parezca, tuve que seleccionar otro archivo de la barra lateral de la izquierda y volver a mi archivo con los casos de prueba. Después de eso, el botón se activó de inmediato.


Tenía el mismo problema en Xcode 8.3.

He eliminado el método tearDown

override func tearDown() { super.tearDown() }

Como no necesitaba usarlo. Tan pronto como lo volví a agregar, se habilitó el botón de grabación.


Tuve el mismo problema y mi configuración fue correcta, iOS> = 9.0, se agregó target.

El problema fue la indexación de Xcode que tomó un tiempo (alrededor de 1 h), después de que se realizó la indexación, el botón de grabación se activa.


Un método de prueba debe comenzar con la test de la palabra para que Xcode la reconozca y permita grabar cuando el cursor está dentro del método.

Una indicación de que Xcode reconoció el método es un rombo que aparece a la izquierda del nombre del método:


Comprueba tu editor de versiones y corríjelo.