gpt4 book ai didi

swift - 无法为具有 SwiftyJSON 依赖项的 Cocoa 框架运行 XCTest

转载 作者:搜寻专家 更新时间:2023-11-01 05:39:36 25 4
gpt4 key购买 nike

我正在使用 Swift 1.2 和 Xcode 6.4 构建一个动态的 Cocoa Framework(比方说 MyFrame)。使用 Carthage 下载后,我将 SwiftyJSON 用作 MyFrame 中的链接框架。它可以完美地构建和运行。我在 XCTestCase 中编写了单元测试。测试目标是 MyFrameTests。只要 MyFrame 不使用 SwiftyJSON,它就可以完美运行。当我在 MyFrame 中添加 SwiftyJSON 时,出现以下错误:

2015-08-25 18:22:25.653 xctest[17732:237778] The test bundle at /Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest could not be loaded because an unanticipated error occurred.
2015-08-25 18:22:25.654 xctest[17732:237778] Detailed error information: Error Domain=NSCocoaErrorDomain Code=3587 "The bundle “MyFrameTests” couldn’t be loaded because it is damaged or missing necessary resources." (dlopen_preflight(/Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest/MyFrameTests): Library not loaded: @rpath/SwiftyJSON.framework/SwiftyJSON
Referenced from: /Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest/MyFrameTests
Reason: image not found) UserInfo=0x7f8e13705070 {NSLocalizedFailureReason=The bundle is damaged or missing necessary resources., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSFilePath=/Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest/MyFrameTests, NSDebugDescription=dlopen_preflight(/Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest/MyFrameTests): Library not loaded: @rpath/SwiftyJSON.framework/SwiftyJSON
Referenced from: /Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest/MyFrameTests
Reason: image not found, NSBundlePath=/Users/manonh/try16/MyFrame/DerivedData/MyFrame/Build/Products/Debug-iphonesimulator/MyFrameTests.xctest, NSLocalizedDescription=The bundle “MyFrameTests” couldn’t be loaded because it is damaged or missing necessary resources.}

*** Test session exited(1) without checking in. If you believe this error represents a bug, please attach the log file at /var/folders/9g/jxyyssdx0xn9xp_29fg2l9080000gq/T/com.apple.dt.XCTest-status/Session-2015-08-25_18:22:25-2wDwFh.log

我用谷歌搜索了一下,在build设置> 打包中找到了一些关于定义模块和其他选项的信息。没用。

我尝试在测试 swift 文件中添加 import SwiftyJSON。没用

我还尝试将 SwiftyJSON 放入 MyFrame 的 Copy Bundle Resource 中。没用

在 MyFrameTests 中,我尝试在 Link Binary With Libraries 和 Copy Bundle Resource 中添加 SwiftyJSON。我尝试了 SwiftyJSON 框架的上述“位置”的所有组合。没用

经过 2 天的努力、谷歌搜索和阅读其他 stackoverflow 帖子后,我还没有找到运行此测试的方法。

有没有人知道如何对具有依赖性的 Cocoa 框架进行单元测试?

在此先感谢您的帮助!

下面是我想在 MyFrame 中测试的非常基本的类和 MyFrameTests 中的测试用例,如果它有任何用处的话。

MyFrameClass.swift

import Foundation
import SwiftyJSON

public class MyFrameClass {

public init() {}

public func getFive() -> Int {
return 5
}
}

MyFrameTests.swift

import UIKit
import XCTest
import MyFrame

class test18Tests: XCTestCase {

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

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

func testExample() {
XCTAssert(true, "Pass")
}

func testExample2() {
var c = MyFrameClass()
XCTAssertEqual(c.getFive(), 5, "Five test of MyFrameClass")
}

func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock() {
// Put the code you want to measure the time of here.
}
}
}

只需从 MyFrameClass.swift 中删除 import SwiftyJSON 即可,效果非常好。

最佳答案

我遇到了类似(但不完全相同)的问题。我的 swiftyJSON 是使用 cocoa pod 安装的。然后我从 cocoa pod 中删除它并在我的项目中手动安装文件并解决了问题。我知道我现在必须手动更新该文件,但由于它对其他框架没有任何依赖性,因此相当容易且付出的代价很小

关于swift - 无法为具有 SwiftyJSON 依赖项的 Cocoa 框架运行 XCTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com