unit test swift xctest

swift - unit - ¿Cómo puedo ejecutar XCTest para una aplicación rápida desde la línea de comandos?



unit test ios (2)

Quiero probar algunos ejemplos de Swift utilizando XCTest desde la línea de comandos si es posible.

import XCTest class LeapTest : XCTestCase { func testVanillaLeapYear() { let year = Year(calendarYear: 1996) XCTAssertTrue(year.isLeapYear); } }

Me encantaría ejecutarlo desde la línea de comandos.

Ya configuré Xcode para usar las herramientas de desarrollo en la versión beta:

sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer/

Si ingenuamente lo intento y lo ejecuto va así.

$ xcrun swift LeapTest.swift LeapTest.swift:1:8: error: cannot load underlying module for ''XCTest'' import XCTest ^

¿Alguna forma de ejecutarlo directamente desde el CLI? ¿O tengo que crear un proyecto Xcode?


Creo que el problema es que tiene su archivo test.swift bajo la membresía objetivo del proyecto principal. Asegúrese de que sus archivos de prueba de Swift pertenecen solo al objetivo de prueba.


Pude obtener su compilación XCTestCase con el siguiente comando:

swiftc / -F/Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks / -Xlinker -rpath -Xlinker /Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks / -lswiftCore LeapTest.swift / -o LeapTests

Luego puedes ejecutar las pruebas con xctest :

xcrun xctest LeapTests

Y para desglosar las opciones de la línea de comandos de swiftc :

  1. -F... agrega XCTest.framework a las rutas de búsqueda del marco, lo que permite que se importe desde Swift
  2. -Xlinker -rpath ... se asegura de que la biblioteca compartida de XCTest pueda encontrarse en el momento de la carga
  3. Sin especificar explícitamente -lswiftCore , encontré que xctest se bloquearía cuando intentara ejecutar el conjunto de pruebas

¡Espero que ayude!