Swift 2.0:使用Set时无法将值MyApp.MyCustomClass转换为MyAppTests.MyCustomClass

Bar*_*zyk 27 xcode unit-testing ios swift swift2

这是一个错误:

无法将类型MyApp.Member(0x1674daf8)的值转换为MyAppTests.Member(0x4c07248).

您可以轻松地重现错误:

  1. 设置二 NSManagedObject

    @objc(Member)
    class Member: NSManagedObject {
        @NSManaged var family: Family
    }
    
    @objc(Family)
    class Family: NSManagedObject {
        @NSManaged var members: Set<Member>
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在您的设置中也可以.xcdatamodel:

  3. 然后在你的TestFile中:

    func testA() {
    
        let family = Family.MR_createEntityInContext(context)
        let father = Member.MR_createEntityInContext(context)
    
        father.family = family
    
        let firstMember = family.members.first
    
        XCTAssertEqual(firstMember!, father)
    }
    
    Run Code Online (Sandbox Code Playgroud)

Bar*_*zyk 33

我找到了一个解决方案:

我想那些有这种问题的人,用这种方式将他们的文件导入测试目标:

在此输入图像描述

因为他们应该这样做:

在此输入图像描述

因此,只需从测试目标中删除文件即可.然后,如果您需要测试目标中的文件,只需@testable每个测试类中使用关键字.

在此输入图像描述

这样,在目标之间再次投射值没有问题.它对我有用:-)享受:-)

阅读更多Swift 2 + Xcode 7:单元测试访问变得轻松!!!!

  • 我正在使用swift 4在xcode 9.1上尝试它,但它无法正常工作.知道如何解决这个问题吗? (3认同)