Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

745
Vistas
Error de prueba de unidad de Swift: símbolo(s) no encontrado(s) para la arquitectura x86_64 (Swift Package Manager)

Tengo problemas para que las pruebas unitarias se ejecuten en proyectos Swift creados con el Administrador de paquetes Swift (es decir, cualquier prueba unitaria creada por el Administrador de paquetes... las que creo desde Xcode funcionan bien desde Xcode). Recibo el mismo error en todos los proyectos generados desde el Administrador de paquetes. Para mantenerlo simple, probé un proyecto de prueba muy básico con la menor modificación posible de la configuración predeterminada, pero aún obtenía el error. Estos son los pasos para reproducir:

  1. Cree un nuevo proyecto con swift package init --type executable (el nombre del módulo es Hello )
  2. Agregue el Proyecto Xcode: swift package generate-xcodeproj
  3. En la configuración de compilación de Xcode, asegúrese de que Habilitar capacidad de prueba sea Sí
  4. En swift.main ingrese este simple código de prueba:
 import Foundation let message = "Hello, world!" print(message)
  1. En HelloTests.swift:
 import XCTest @testable import Hello class HelloTests: XCTestCase { func testExample() { XCTAssert(message == "Hello, world!") } static var allTests = [ ("testExample", testExample), ] }
  1. Package.swift y XCTestManifests.swift se dejan tal cual.
  2. Se compila y funciona bien con swift build swift run Hello (también desde Xcode).
  3. Sin embargo, al ejecutar swift test o ejecutar cualquier prueba en Xcode, la compilación falla con el siguiente mensaje de error:
 Undefined symbols for architecture x86_64: "Hello.message.unsafeMutableAddressor : Swift.String", referenced from: implicit closure #1 : @autoclosure () throws -> Swift.Bool in HelloTests.HelloTests.testExample() -> () in HelloTests.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

De alguna manera, parece que no se puede vincular el módulo principal, por lo que no se reconocen los símbolos. Sin embargo, no puedo decir qué está mal o cómo solucionarlo.

Descargué uno de los proyectos de muestra de GitHub y generé el proyecto Xcode. Las pruebas de este proyecto funcionan perfectamente en Xcode y en la terminal. He comparado cuidadosamente el proyecto de muestra con el mío y no puedo decir qué es diferente. Casi todo el código de instalación (Package.swift, estructura de archivos, etc.) y la configuración del proyecto son casi idénticos. La única diferencia significativa que puedo decir es que el proyecto de muestra es una biblioteca/marco y el mío es un ejecutable (pero parece que la vinculación debería funcionar igual para ambos tipos). De lo contrario, no puedo decir lo que están haciendo bien y lo que estoy haciendo mal.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo descubrí (gracias a la ayuda de Cristik ). Los módulos ejecutables no se pueden probar (al menos por ahora), por lo que la solución fue mover todas las definiciones a un módulo de biblioteca y dejar solo el archivo main.swift en el módulo ejecutable. De esa forma, todas las pruebas unitarias se ejecutaron con la biblioteca como dependencia frente al ejecutable. El paquete.swift ahora se ve así:

 let package = Package( name: "HighestNumberPairing", products: [ .executable(name: "HighestNumberPairing", targets: ["HighestNumberPairing"]), .library(name: "NumberPairing", targets: ["NumberPairing"]), ], dependencies: [], targets: [ .target( name: "HighestNumberPairing", dependencies: ["NumberPairing"]), .target( name: "NumberPairing", dependencies: []), .testTarget( name: "NumberPairingTests", dependencies: ["NumberPairing"]), ] )

El programa completo está aquí en Github .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda