ios - test - Xcode 6 Editor no reconoce pruebas unitarias
unit test swift 4 (14)
Tengo el problema de que el Xcode IDE 6 no detecta mis casos de prueba rápida de la unidad correctamente. Cuando ejecuto las pruebas unitarias, todas las pruebas fueron ejecutadas.
Pero en el IDE durante la edición, las pruebas de la unidad no son reconocidas. Tengo que ejecutar todo el conjunto de pruebas unitarias para ejecutar una única prueba.
No pude entender cómo evitar este problema.
Xcode 7
Mi respuesta completa está here .
En Xcode 7 obtener la configuración de Test de la Unidad es un poco más fácil que en Xcode 6 (no es necesario anotar clases y métodos como public
). Use @testable
antes de la importación del nombre de la clase.
import XCTest
@testable import MyProject
class MyClassTests: XCTestCase {
func testMyMethod() {
let myClass = MyClass()
let sum = myClass.addTwoNumbers(1, 2)
XCTAssertEqual(sum, 3)
}
}
En tu clase no tienes que hacer nada especial.
class MyClass {
func addTwoNumbers(a: Int, b: Int) -> Int {
return a + b
}
}
Es posible que también tenga que establecer "Define Module" (Definir módulo) en Packaging (Embalaje) en YES (Sí) para las Configuraciones de compilación de su aplicación.
Ver también estas respuestas:
- here
- https://.com/a/25477915/3681880
- https://.com/a/29435815/3681880
(Dado que su comentario indica que todavía tiene este problema después de una semana, puede que esto no lo ayude, pero ...)
Me encontré con este problema en el que agregar una nueva prueba (Swift) en 6.1 no lo haría aparecer en el "Navegador de prueba" o en el editor de esquemas, reiniciando Xcode resolvió el problema y ahora puedo ejecutar las pruebas individualmente.
A continuación hay algunas soluciones para este problema:
Espera por algún tiempo . Lleva tiempo cargar el diamante a veces. Navega entre diferentes archivos y luego muévete al mismo caso de prueba que debería aparecer.
Limpiar proyecto, limpiar carpeta de compilación e incluso eliminar contenido de datos derivados. Verifique cómo eliminar datos derivados de forma segura.
Salga de Xcode y ábralo de nuevo.
Asegúrese de que el nombre de su caso de prueba comience con
testFunc_Name
A veces, su archivo de caso de prueba puede contener una función distinta a test-case. En tal escenario, el símbolo de diamante no aparece.
Remove such function.
En mi caso, la solución 1, 3 y 5 a menudo funcionó para mí.
A veces, todo lo que necesita hacer es esperar a que Xcode termine de indexar todos sus archivos. Para proyectos grandes, mi vista de navegador de prueba unitaria con frecuencia está vacía hasta que finaliza.
Asegúrese de que el nombre de caso de prueba comience con "prueba" seguido de cualquier nombre que desee y construya (cmd + B) el proyecto. ¡El diamante aparecerá!
Cuando agrega una nueva prueba, guarde el archivo (Cmd + S) y aparecerá el diamante (verificado en Xcode 7.3)
El problema está resuelto. Todo lo que tengo que hacer es abrir la ventana "Ventana -> Proyectos" y eliminar "Datos derivados. Después de indexar, todas las pruebas están funcionando".
Mientras tanto, Apple está solucionando los errores en el editor de Xcode 6.3 poco a poco.
La "solución" para mí fue agregar una nueva prueba. Inventé algunas tonterías
func testThatNothing() {
XCTAssertTrue(true, "True should be true")
}
Cuando volví a ejecutar las pruebas, el editor reconoció todas las pruebas en ese archivo. Eliminé la prueba falsa y todo está bien. Lamentablemente tuve que hacer esto en cada archivo, pero al menos funciona. Espero que esto ayude a alguien.
Para mí fue suficiente seleccionar Product->Test
y esperar un poco. Cuando las pruebas comienzan a ejecutarse, todos los diamantes están disponibles
Para mí, la solución fue prefijar todo el método con ''prueba''
es decir
func arrayResponseCall()
debiera ser:
func testArrayResponseCall()
Resolví mi problema simplemente convirtiendo los métodos private
en public
.
Entonces, si este es el mismo problema que enfrenta, cambie:
private func testString()
a:
public func testString()
Tuve el mismo problema también. Solo asegúrese de que cada uno de sus casos de prueba tenga algún tipo de declaraciones XCTAssert ().
func testSomething(){
XCTAssert(true, "Pass")
}
Tuve un error similar (aunque en Objective C, no rápido). Si agregué un nuevo método de prueba a la clase, el nuevo método no se mostraría en el navegador de prueba ni se ejecutaría cuando ejecutara el paquete completo. Tampoco me gustaría obtener esos puntos en la barra lateral al lado de cada método que, si hace clic, se ejecutará un solo método de prueba.
Lo único que solucionó mi problema era eliminar toda la clase de prueba (guardar sus contenidos en otro lugar temporalmente) y luego volver a crear la clase de prueba y (¿quizás con más cuidado?) Volver a establecer la configuración de compilación.