Widget 扩展单元测试错误:“未定义符号:[...] 的标称类型描述符。”

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

我的应用程序有一个小组件扩展,在扩展中定义了结构

MyStruct
,目标成员资格为
MyAppWidgetExtension
。我还有一个 UnitTesting 目标,我想在其中为我的主应用程序以及 WidgetExtension 进行 UnitTests。

一旦我将文件添加到 UnitTesting 目标,该目标具有

var
/
let
类型,例如
MyStruct
(编译器在此文件中通过
var foo: MyStruct?
识别),执行 UnitTest 会产生编译器错误:“未定义符号:MyAppWidgetExtension.MyStruct 的标称类型描述符”。
知道这里出了什么问题吗?

swift unit-testing
2个回答
4
投票

在具有目标成员身份的主应用程序目标中定义
    @testable import MyAppWidgetExtension
  • MyStruct 
    在单元测试中使用 
  • MyApp
  • 以便能够从应用程序目标使用
    @testable import MyApp
    
    
  • 现在编译器不再抱怨了。


0
投票

所以请确保:

您尝试使用的包是
    LINKED
  1. ,作为活动目标的依赖项。请注意,它与包依赖项不同。 该软件包已
  2. MyStruct
  3. 添加到您尝试使用的文件中。
    您在包装中使用的代码从外部可见。 (测试目标中至少 
  4. import
  5. public
    
    
  6. SPM 演示

@testable

Xcode 项目演示

步骤与 SPM 相同,但您应该使用 Xcode GUI,

最缺少的步骤是第一步,您忘记将导入的框架从

let package = Package( name: "MyTarget", products: [ .library(name: "MyTarget", targets: ["MyTarget"]), ], dependencies: [ .package(url: "https://github.com/firebase/firebase-ios-sdk", from: "10.27.0"), // 👈 0. Make sure it is added as a dependency of the PACKAGE ], targets: [ .target( name: "MyTarget", dependencies: [ .product(name: "FirebaseAnalytics", package: "firebase-ios-sdk"), // 👈 1. Make sure it is LINKED as a dependency of the TARGET ] ), ] )

选项卡 ->

General
部分链接到活动框架。
    

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