我试图在遗留的objc代码中测试一些Swift类(@objc class)。我正在测试类中导入“UnitTests Swift.h”。
然后我得到了这个错误:
在自动生成的“UnitTests Swift.h”中找不到模块“MyApp”
这是什么里面的顶部部分的"UnitTests-Swift. h"
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
#if defined(__has_feature) && __has_feature(modules)
@import XCTest;
@import ObjectiveC;
@import MyApp;
@import CoreData;
#endif
我清理了项目,检查了所有相关标志(“在Xcode单元测试中使用@testable时没有这样的模块”,不能在Objective-C中使用Swift类),删除了派生数据等等。。不知道发生了什么,但我很确定@import MyApp不应该出现在那里。。
有人能帮我吗?
您可以添加Swift单元测试(只需创建一个新的单元文件,并通过. swft
更改扩展名)。
从单元测试文件中,您可以使用Swift类。
您还可以使用测试模块桥接头从Objective-C单元测试导入该文件(反之亦然)。
这将是Swift单元测试文件的默认示例:
import XCTest
@testable import MyApp
class MyAppSwiftTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
因为要测试的Swift类是MyApp的一部分,所以应该在测试类中导入“MyApp Swift.h”,而不是“UnitTests Swift.h”。
我在项目中遇到了这个问题,经过一整天的调查,我终于解决了这个问题。基本上,这是因为ObjC和Swift之间存在循环依赖关系。所以我的情况是:
@obj
属性的Swift协议
所以相当简单的组合会导致这个错误。为了解决这个问题,您需要:
或
@obc
,这将允许您从所有ObjecteC测试类中访问您的SwiftClass,但是这些类对Swift协议没有任何了解。问题内容: 我有以下目录结构: 我尝试在从server.js导出的app.js中调用函数,我这样做: 但是得到错误: 我如何正确包含它? 谢谢。 问题答案: 该路径必须相对于您当前所在的文件。 用
问题内容: 使用JDK / 11 的早期访问版本来编译基于Java-9且使用VM参数的现有代码 解决HTTP / 2客户端孵化器模块的问题 现在以编译错误结束 找不到模块:jdk.incubator.httpclient Java版本详细信息: 问题答案: 通过HTTP客户端API的标准化,现在可以删除已孵化的API。 现在,标准API的模块名称和软件包名称将 用作- 另外,将所有依赖类路径的应用
在单元测试时,我得到了以下错误- 在对Run Configuration进行了一些调查之后,我们发现它在运行这个单元时使用了错误的模块(main.java.com.example.dexter.sunshine.app)。我们如何改变这个模块?
问题内容: 大家好,我只是在学习烧瓶。我用pip来安装它。然后,当我运行此基本代码时,我得到一个错误。基本上,我看到它的工作,然后突然退出,并出现以下错误。这可能看起来是一些环境问题,但我不确定。前几天这很奇怪,现在却行不通。 问题答案: 您说过,仅当您从交互式shell运行代码时,才会出现此问题。它是由(wsgi服务器所基于的)功能引起的。 如果更改了项目文件,则在调试模式下将自动重新启动服务器
问题内容: 我最近在计算机上安装了cx_Oracle模块,以连接到远程Oracle数据库服务器。(我身边没有Oracle客户端)。 Python:2.7 x86版 Oracle:版本11.1.X x64 Cx_Oracle:版本5.1.2-11g.win32-py2.7 然后,每次我运行脚本时,脚本都会失败并显示以下消息: ImportError:DLL加载失败:找不到指定的模块。 我想知道是否我
问题内容: 我收到错误,无法在Node.js应用程序中找到模块“ bcrypt” 我尝试使用 npm install bcrypt 安装它, 但仍然出现问题。 错误信息: 问题答案: 使用命令无法为我解决问题。 我尝试了以下命令,但问题解决了。