Ios 如何对UITextField进行单元测试以查看其是否为空

Ios 如何对UITextField进行单元测试以查看其是否为空,ios,swift,unit-testing,swift4,Ios,Swift,Unit Testing,Swift4,我尝试对textfield执行单元测试,以检查该textfield是否为空,但在展开可选值时,我得到了错误意外发现nil。我用的是警卫,但我不知道我做错了什么 这是我的密码: class AdminPanelViewController: UITableViewController { // Func to insert data from TextFields into CoreData func insertProduct(){ guard let product

我尝试对textfield执行单元测试,以检查该textfield是否为空,但在展开可选值时,我得到了错误
意外发现nil。我用的是警卫,但我不知道我做错了什么

这是我的密码:

class AdminPanelViewController: UITableViewController {

// Func to insert data from TextFields into CoreData
    func insertProduct(){

        guard let productName = productNameTextfield.text, productName != "" else{
            SCLAlertView().showError(Constants.nameRequired, subTitle: Constants.messageNameRequired)
            return
        }
        guard let productCategory = productCategoryTextField.text, productCategory != "" else{
            SCLAlertView().showError(Constants.categoryRequired, subTitle: Constants.messageCategoryRequired)
            return
        }
        guard let productPrice = productPriceTextfield.text, productPrice != "" else{
            SCLAlertView().showError(Constants.priceRequired, subTitle: Constants.messagePriceRequired)
            return
        }
        guard let productDescription = productDescriptionTextView.text, productDescription != ""else{
            SCLAlertView().showError(Constants.descriptionRequired, subTitle: Constants.messageDescriptionRequired)
            return
        }

        let product = Product(context: context) // Start inserting in Core Data
        let productUUID = UUID().uuidString
        product.id = productUUID
        product.name = productName
        product.category = productCategory
        product.price = Float(productPrice)!
        product.prodDescription = productDescription

        appDelegate.saveContext() // End inserting and save the content in Core Data
        resetAllFields()
        SCLAlertView().showSuccess(Constants.done, subTitle: Constants.messageProductAdded)
    }
}


// UNIT TESTING

import XCTest
@testable import ShoppingLand

class AdminPanelViewControllerTests: XCTestCase {

    var collection: AdminPanelViewController!

    // Test if ProductNameTextfield is empty
    func testIfProductNameTextfieldIsEmpty(){

        guard let productNameTextField = collection.productNameTextfield else{
            XCTFail("Product name is required !")
            return
        }
        productNameTextField.text = ""

        XCTAssertEqual(productNameTextField.text, "Product name is required !")
    }

}

如果你正在读这篇文章,非常感谢你抽出时间

在对视图控制器执行任何测试之前,请确保您正在调用
xguiapplication().launch()
。只是想知道您是否在XCTestCase生命周期设置()方法中初始化了AdminPanelController。?是否设置了
var集合:AdminPanelViewController?有可能
collection
可能是
nil
?我尝试了你所有的答案。无法使用任何:(您可以添加您的测试代码吗?