swift Xcode单元测试:无法将“Person”类型的值转换为预期的参数类型“Person”

Posted

技术标签:

【中文标题】swift Xcode单元测试:无法将“Person”类型的值转换为预期的参数类型“Person”【英文标题】:swift Xcode unit test: Cannot convert value of type "Person" to expected argument type "Person" 【发布时间】:2015-10-21 03:25:13 【问题描述】:

我正在尝试编写一个单元测试类来测试我的自定义类。当我尝试使用自定义对象作为输入变量调用自定义类中的方法时,我得到: '无法将“Person”类型的值转换为预期的参数类型“Person”。 “Person”是类,继承自 NSManagedObject,输入对象是从其中创建的。我对采用其他值类型的其他方法没有任何问题。该方法工作正常。测试班是唯一抱怨这一点的人。这是错误还是限制?有什么建议可以让我更深入地研究这个问题吗?

【问题讨论】:

可能是命名空间问题。在您的核心数据模型中,当您选择 Person 实体时,您是否在身份检查器中指定了模块名称?这可能具有 .Person 的形式。如果是这样,请尝试将其删除并将其留空。 谢谢。我终于想通了。在测试类中,对象没有像正常情况下那样正确创建。我被错误信息误导了。 【参考方案1】:

我之前遇到过这个问题。事实证明,被测系统(在我的例子中,它是一个调用对象的服务;可能是您的示例中的 PersonService)没有 Target 对测试项目的成员资格。我只是单击了 .swift 文件,并确保检查了主项目和测试项目。

希望这会有所帮助!

【讨论】:

谢谢。我也会检查一下。 在我的例子中,问题是有问题的对象在框架和服务中都有目标成员资格。但是,它只需要框架中的目标成员身份,因为服务导入了框架。 @Andrew 谢谢!对我来说就是这样。我的主要项目目标文件也针对我的测试,并使用“@testable”导入它们。主项目文件应该只针对主项目,反之亦然。 @Andrew 你救了我的命,你能用这个答案再次回答我最近的帖子吗?

以上是关于swift Xcode单元测试:无法将“Person”类型的值转换为预期的参数类型“Person”的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode ui 测试 Swift 中查找表格单元格

Swift、访问修饰符和单元测试

Xcode 8 / Swift 3 中的 iOS 异步单元测试(waitForExpectations 失败)

如何在 Swift 中设置单元测试?

Swift xcode 项目错误。无法从表格中检索单元格

Xcode 8 单元测试错误:无法确定 TEST_HOST 的包标识符