Ios 如何在viewcontroller单元测试中测试设置私有变量的方法?

Ios 如何在viewcontroller单元测试中测试设置私有变量的方法?,ios,swift,tdd,Ios,Swift,Tdd,我有一个ViewController,它符合协议。ViewController具有以下专用UI组件: backgroundImage、logoimage、loginButton、signupButton-所有这些都是私有的。(因此单元测试无法访问) 如何在单元测试中测试下面的协议方法实现?我正在使用XCTestFramework进行单元测试 extension ViewController : ViewControllerProtocol{ func setbackgroundImage

我有一个ViewController,它符合协议。ViewController具有以下专用UI组件: backgroundImage、logoimage、loginButton、signupButton-所有这些都是私有的。(因此单元测试无法访问)

如何在单元测试中测试下面的协议方法实现?我正在使用
XCTestFramework
进行单元测试

extension ViewController : ViewControllerProtocol{
    func setbackgroundImage(_ image: UIImage) {
        backgroundImage.image = image
    }

    func setLogoImage(_ image: UIImage) {
        logoImage.image = image
    }

    func setLoginButtontitle(_ title: String) {
        loginButton.setTitle(title, for: .normal)
    }

    func setSignupButtonTitle(_ title: String) {
        signupButton.setTitle(title, for: .normal)
    }
}

protocol ViewControllerProtocol {
    func setbackgroundImage(_ image : UIImage)
    func setLogoImage(_ image : UIImage)
    func setLoginButtontitle(_ title: String)
    func setSignupButtonTitle(_ title: String)
    func setTitleLabel(_ title: String)
    func setContinuewithoutsignupTitle(_ title: String)
}


通过添加公共getter,您仍然可以在下面对这些值进行单元测试


协议视图控制器协议{
func setbackgroundImage(image:UIImage)
func setLogoImage(image:UIImage)
func setLoginButtontitle(uu标题:字符串)
func setSignupButtonTitle(uu标题:字符串)
func setTitleLabel(utitle:String)
func setContinuewithoutsignupTitle(uu标题:String)
func getbackgroundImage()->UIImage?
func getlogoImage()->UIImage?
func getLoginButtontTitle()->字符串?
func getsignupButtonTitle()->字符串?
}
类MainTest:XCTestCase{
让viewController=viewController()
覆盖函数设置(){
super.setUp()
}
func testExample(){
guard let testImage1=UIImage(名为:“testImage1”)else{
XCTFail(“无法加载测试映像1”)
返回
}
viewController.setbackgroundImage(testImage1)
XCTASERT(viewController.getbackgroundImage()==testImage1)
guard let testImage2=UIImage(名为:“testImage2”)else{
XCTFail(“无法加载测试映像2”)
返回
}
viewController.setLogoImage(testImage2)
XCTASERT(viewController.getlogoImage()==testImage2)
viewController.setLoginButtontTitle(“测试”)
xctasert(viewController.getloginButtonTitle()=“测试”)
viewController.SetSignupButtontTitle(“测试”)
xctasert(viewController.getsignupButtonTitle()=“测试”)
}
}

您使用过吗?是的,我使用的是XTest框架您的
ViewControllerProtocol
定义在哪里?你能分享这些代码吗?我已经更新过了。你是在要求一个简单的单元测试吗?是的,public getter应该可以很好地工作。谢谢。