当前位置: 首页 > 知识库问答 >
问题:

在Xcode单元测试中使用@teable时,“没有这样的模块”

姬国安
2023-03-14

我最近更新到了Xcode 7 beta 5。我曾尝试将单元测试添加到早期的项目中,但在@testable import myModuleName行上收到错误消息“No-some-modulename[myModuleName]”。

我试过了

  • 使用选项清理项目清理生成文件夹

这些都不适用于这个项目(但是我已经得到了在另一个项目中工作的测试)。其他人有这个问题并解决了它吗?

共有3个答案

夏谦
2023-03-14

对我来说,问题是测试的iOS部署目标没有设置为与主目标相同。所以一定要检查这个。

在您的测试目标中:

Build Settings -> iOS Deployment Target -> iOS<same as the target you are testing>
欧奇希
2023-03-14

对我有用的答案

答案是,我的项目中有一些错误导致构建失败。(这只是代码中的标准每日bug。)在我修复了错误并进行了另一次清理和构建之后,它成功了。

请注意,这些错误最初并没有出现。为了让他们出现:

  • 注释出您的整个测试文件,该文件会给您一个"没有这样的模块"错误。
  • 试着再次运行你的项目。

如果有其他错误,它们现在应该会出现。修复它们,然后取消注释您的测试文件代码。“没有这样的模块”错误对我来说已经消失了。

如果这不能解决其他人的问题,您也可以尝试以下方法:

清理生成文件夹

打开产品菜单,按住选项,然后单击清洁构建文件夹...

确保“启用可测试性”设置为“是”

在项目导航器中,单击项目名称。选择Build Settings并向下滚动至Build Options。确保Enable Testability为Yes(对于调试)。

删除并重新添加测试目标

如果你做了其他事情,我猜你可能不需要这么做。但是如果您这样做了,请记住保存您已经编写的所有单元测试。

在项目导航器中单击项目名称。然后选择你的测试目标。单击底部的减号(-)按钮将其删除。

然后单击plus()按钮并选择iOS单元测试包以再次添加它。如您所见,您还可以以相同的方式添加UI测试包。

其他一些想法

  • 确保所有必需的类都是测试目标的成员

如果你发现其他有用的东西,请在下面留下评论或回答。

相关的

  • 如何在Xcode中进行单元测试
陈功
2023-03-14

请检查您尝试使用@testable import“ModuleName”导入的模块名。目标上的模块名称应相同-

 类似资料:
  • 我有一个混合了objective-c和Swift的项目,我试图为它编写单元测试。我的项目名称是:Alphaproject我的产品模块名称是:Alphaproject我在我的主要目标(Alphaproject)中设置为YES Defines module,并设置为YES EnableTestability,以便仅在此同一目标中进行调试。 在我的测试类中,我尝试导入我的产品模块名称: @可测试导入项目

  • 我从来没有使用过单元测试,我了解它的用途,但我真的不知道何时以及如何使用它。 我想知道什么时候值得使用单元测试,也许可以用一些例子。

  • 问题内容: 我看到了这个问题,但仍然无法导入框架并在Xcode 7 beta 2(7A121l)中使用它。 所以目前我正在尝试通过迦太基使用Result。将其添加到 具有Binaries 和 Embed Frameworks的 Build Phases / Link Binary后, 我能够成功编译,但是出现错误提示(是,它表示成功,然后出现错误:S): 关于导入: 该版本可以运行和编译,但是例如

  • 我目前正在用Swift编码,我遇到了一个错误: 没有这样的模块社交 但我不明白,因为模块在我的项目中,在“链接框架和库”和“嵌入式二进制文件”中声明。

  • 我有一个Groovy测试类 在该类中有以下测试用例: 以及如下所示: 现在,当我运行这个测试用例时,我在调用时收到以下错误消息: 棒极了。lang.MissingPropertyException:类:ecs没有此类属性:msg1。MsgDispatcherTest 你知道我错过了什么吗?

  • 问题内容: 我有一个测试用例: 我想在其他测试用例中使用它: 这引起了: 我看了调用异常的单元测试代码,看起来测试不应该以这种方式编写。有没有一种标准的方法可以编写您想要测试的东西,以便以后的测试可以重用?还是有解决方法? 作为一种可疑的解决方法,我现在添加了一个空方法。 问题答案: 确实具有深层的魔力- 如果您选择使用它来运行单元测试(我愿意,因为这样,我可以在工作场所中使用集成到构建系统中的非