XCTest 测试运行程序在启动后从未开始执行测试

问题描述 投票:0回答:1

我正在使用 Vapor (XCTVapor) 和 Python 测试作为应用程序依赖项进行简单的 XCTest 设置,但它从不执行我的测试。 , 5 分钟后,它终止并显示“测试运行程序在启动后从未开始执行测试”。

static func main() async throws {
    var env = try Environment.detect()
    try LoggingSystem.bootstrap(from: &env)
    
    guard let stdLibPath = Bundle.main.path(forResource: "python-stdlib", ofType: nil) else { return }
    guard let libDynloadPath = Bundle.main.path(forResource: "python-stdlib/lib-dynload", ofType: nil) else { return }
    setenv("PYTHONHOME", stdLibPath, 1)
    setenv("PYTHONPATH", "\(stdLibPath):\(libDynloadPath)", 1)
    // Temporarily disable Python
    Py_Initialize()
    print ("Py_Initialize complete")
    
    // we now have a Python interpreter ready to be used
    let app = Application(env)
    defer { app.shutdown() }
    
    do {
        try await configure(app)
    } catch {
        app.logger.report(error: error)
        throw error
    }
    try await app.execute()
}

我能够在 app.execute 上命中断点,但没有任何进展,并且测试用例上没有命中断点。我正在通过 XCode 进行构建。

在 spindump 中调度线程。

   Thread 0x23a87 DispatchQueue "com.apple.main-thread"(1) 412 samples (1-412) priority 46 (base 46)
    412 start + 1903 (dyld + 25631) [0x7ff80675441f]
    412 main + 102 (entrypoint.swift in app + 14630) [0x1050d4926]
    412 ??? (libswift_Concurrency.dylib + 227060) [0x7ffc0beb16f4]
    412 ??? (libswift_Concurrency.dylib + 227107) [0x7ffc0beb1723]
    412 CFRunLoopRun + 40 (CoreFoundation + 1041893) [0x7ff806c0b5e5]
    412 CFRunLoopRunSpecific + 560 (CoreFoundation + 503489) [0x7ff806b87ec1]
    412 __CFRunLoopRun + 1365 (CoreFoundation + 506496) [0x7ff806b88a80]
    412 __CFRunLoopServiceMachPort + 145 (CoreFoundation + 511999) [0x7ff806b89fff]
    412 mach_msg + 19 (libsystem_kernel.dylib + 6282) [0x7ff806a6f88a]
    412 mach_msg_overwrite + 692 (libsystem_kernel.dylib + 34260) [0x7ff806a765d4]
    412 mach_msg2_trap + 10 (libsystem_kernel.dylib + 5538) [0x7ff806a6f5a2]
    *411 ipc_mqueue_receive_continue + 0 (kernel + 1528192) [0xffffff8000451180]
    *1 ipc_mqueue_receive_continue + 0 (kernel + 1528192) [0xffffff8000451180]

所有其他线程似乎都来自 NIO 线程池。 (NIO-ELT-)和(TP-#)。每个 16 个线程

测试文件:

    @testable import app
    //import XCTVapor
    import PythonKit
    //import XCTest
    import XCTVapor
    
    final class appTests: XCTestCase {
        override func setUp() async throws {
            try await super.setUp()
        }
    
        override func setUpWithError() throws {
            print ("setupWthError 1")
            try super.setUpWithError()
            print ("setupWthError 2")
        }
    
        func testPython() async throws {
            print("TestPython")
            let sys = Python.import("sys")
            XCTAssertNotNil(sys)
            print("Python Version: \(sys.version_info.major).\(sys.version_info.minor)")
            print("Python Encoding: \(sys.getdefaultencoding().upper())")
            print("Python Path: \(sys.path)")
    
            _ = Python.import("math") // verifies `lib-dynload` is found and signed successfully
        }
    
        func testHelloWorld() async throws {
            let app = Application(.testing)
            defer { app.shutdown() }
            try await configure(app)
    
            try app.test(.GET, "hello", afterResponse: { res in
                XCTAssertEqual(res.status, .ok)
                XCTAssertEqual(res.body.string, "Hello, world!")
            })
        }
    }
xctest vapor swift-pythonkit
1个回答
0
投票

这还不一定是完整的答案。您没有显示您在第一个代码块中使用的导入内容,但您应该:

import App
import Vapor

我无法编译

try await app.execute()
。通常是
try await app.run()
。如果你尝试这个会发生什么?

© www.soinside.com 2019 - 2024. All rights reserved.