Sur*_*gch 141 xcode unit-testing ios xctest
我最近更新到Xcode 7 beta 5.我尝试在早期项目中添加单元测试,但是我收到错误消息"没有这样的模块[myModuleName]"就@testable import myModuleName
行了.
我试过了
这项工作都没有用(但我已经在另一个项目中进行了测试).还有其他人有这个问题并解决了吗?
Vod*_*Ion 178
请检查您尝试导入的模块名称@testable import "ModuleName"
.模块名称应该相同Target->Build Settings-> Product Module Name
Sur*_*gch 109
答案对我有用
答案是我的项目中有一些错误导致构建失败.(这只是代码中每天的标准错误.)在我修复了错误并进行了另一次清理和构建之后,它就起作用了.
请注意,这些错误最初没有显示出来.让他们出现:
如果还有其他错误,它们现在应该出现.修复它们,然后取消注释Test文件代码."没有这样的模块"错误消失了.
如果这不能解决其他人的问题,您还可以尝试以下方法:
清理构建文件夹
打开"产品"菜单,按住Option,然后单击"清除构建文件夹..."
确保将"可测试性"设置为"是"
在Project Navigator中,单击您的项目名称.选择Build Settings并向下滚动到Build Options.确保Enable Testability为Yes(用于调试).
删除并重新添加测试目标
如果你做了其他事情,我的猜测是你可能不需要这样做.但是如果你这样做,请记得保存你已经写过的任何单元测试.
在Project Navigator中单击您的项目名称.然后选择您的测试目标.单击底部的减号( - )按钮将其删除.
然后单击加号(+)按钮并选择iOS Unit Testing Bundle再将其添加回来.如您所见,您还可以以相同的方式添加UI测试包.
其他一些想法
要么...
如果您发现其他有效的方法,请在下方发表评论或回答.
有关
Jes*_*ess 60
对我来说问题是测试的iOS部署目标没有设置为与主要目标相同.所以一定要检查一下.
在您的测试目标中:
Build Settings -> iOS Deployment Target -> iOS<same as the target you are testing>
Run Code Online (Sandbox Code Playgroud)
Vic*_*ift 27
所以这就是我在尝试了之前建议的所有建议解决方案后让我的代码工作的方式.
一切都像魅力一样.希望这可以帮助.
smi*_*Bot 16
需要注意的是,如果您的模块名称中包含短划线字符,-
那么您将不得不使用下划线来引用它_
.出于某种原因,我怀疑这可能是一个问题,这确实是我的问题.
例如.@testable import Ocean-Swift
变@testable import Ocean_Swift
另外一件事,如果你确实使用了@testable
语法,请确保不要在测试目标中包含生产代码.我发现这会导致莫名的怪异.
小智 12
对于那些滚动到最后一个答案但仍然没有任何效果的人,这是在遵循所有其他答案建议后为我所做的。我正在使用 Xcode 11:
在我的案例中导致问题的原因是我更改了产品名称
我不知道更改产品名称也会更改Product Module Name,这是我的测试文件中用于模块导入的名称。我改变了我的导入如下:
@testable 导入 New_Name
有效
我希望它有帮助
这听起来是两个目标的构建设置的错误.你需要确保:
ENABLE_TESTABILITY
两个目标都等于是.PRODUCT_MODULE_NAME
测试目标的值应与应用程序的值不同.还有一件事要检查:如果你有一个Objective-C项目,但是在Swift中编写单元测试,请确保主目标使用至少一个Swift文件!
更多信息:
我正在开发一个Objective-C项目,但是想在Swift中编写单元测试.
我将Swift文件添加到主目标以生成必要的ProjectName-Bridging-Header.h文件,编写我的测试并且一切正常.
后来我删除了Swift文件因为我认为我不需要它(所有主要目标的代码都在Objective-C中......我只是在Swift中编写测试).
直到后来我做了一个"干净/干净的构建文件夹"并且出现"没有这样的模块"问题之后我才注意到问题.经过一番搔痒后,我添加了一个新的空白Swift文件,问题就消失了.
我已经多次使用/不使用Swift文件进行了测试,它只适用于它...所以,我要么需要在项目中保留空白文件,将一些Objective-C转换为Swift,或者添加一些用Swift编写的项目的新代码.
就我而言,我有 3 个问题。第一个是我必须在中指定导入路径:
Target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths
Run Code Online (Sandbox Code Playgroud)
第二个是我正在使用 Pods,我必须使用以下命令将这些 Pods 导入到我的测试中:
target 'MyAppTests' do
inherit! :complete
end
Run Code Online (Sandbox Code Playgroud)
第三个,因为我在我的目标中使用了桥接头,因此我必须指定桥接头与测试相同。
确保在测试方案的构建设置下,测试目标位于列表中.
在播放按钮旁边,选择测试方案,然后选择编辑方案...,转到构建部分,单击加+并选择要测试的目标.
在我的情况下,我们有一个内部目标,我们开发(一些小的差异),并在合并后,它从测试配置中删除.
这是未列出的另一件事要检查。对我来说,这与我的团队有关,可能是因为我们团队的代理尚未同意最新的许可协议!一旦我在目标的常规设置中选择了一个不同的团队,然后我指定了一个特定的部署目标,如 12.1 或 11.0,突然“没有这样的模块”警告消失了。
如果您的项目中有一些目标 - 检查您尝试使用 @testable import "TARGETSModuleName" 导入的模块名称中的目标。
模块名称应与以下位置相同:目标 -> 构建设置 -> 产品模块名称
例如:
归档时间: |
|
查看次数: |
67885 次 |
最近记录: |