JAVA: JUNIT 测试 class 类型的字符串

JAVA: JUNIT testing of class type with string

所以我有一个测试是通过从文本文件中读取来测试 addNewCustomer 方法

@Test
public void testAddNewCustomer() {

    System.out.println("addNewCustomer");
    try {
        File nFile = new File("ProductData.txt");
        File file = new File("CustomerData.txt");
        Scanner scan = new Scanner(file);
        ElectronicsEquipmentSupplier ees = new ElectronicsEquipmentSupplier(1, 1, InputFileData.readProductDataFile(nFile));
        ees.addNewCustomer(InputFileData.readCustomerData(scan));
        CustomerDetailsList expResult = ees.getDetails();
        CustomerDetailsList result = ees.getDetails();
        assertEquals(expResult, result);
    } catch (IllegalCustomerIDException | IOException | IllegalProductCodeException e) {
        fail(e.getMessage());
    }
}

我遇到的问题是要有什么作为预期的结果?我尝试将字符串与我认为会输入的值放在一起,但它随后说我无法将字符串类型与 CustomerDetailsList 类型进行比较。有任何想法吗?

public class 客户详细信息列表 {

private final ArrayList<CustomerDetails> customerCollection;

public CustomerDetailsList() {
    customerCollection = new ArrayList<>();
}

public void addCustomer(CustomerDetails newCustomer) {
    customerCollection.add(newCustomer);
}

public int numberOfCustomers() {
    return customerCollection.size();
}

public void clearArray() {
    this.customerCollection.clear();
}
/**
 *
 * @param givenID the ID of a customer
 * @return the customer’s details if found, exception thrown otherwise.
 * @throws supplierproject.CustomerNotFoundException
 */
public CustomerDetails findCustomer(String givenID) throws CustomerNotFoundException {
    CustomerNotFoundException notFoundMessage
            = new CustomerNotFoundException("Customer was not found");
    int size = customerCollection.size();
    int i = 0;
    boolean customerFound = false;
    while (!customerFound && i < size) {        
        customerFound = customerCollection.get(i).getCustomerID().equals(givenID);
        i++;
    }
    if (customerFound) {
        return customerCollection.get(i - 1);
    } else {
        throw notFoundMessage;
    }
}
@Override
public String toString() {
    StringBuilder customerDets = new StringBuilder();
    for (int i = 0; i < numberOfCustomers(); i++) {
        customerDets.append(customerCollection.get(i).toString()).append("\n");

    }
    return customerDets.toString();
}

} 列表本身

一般来说,您应该测试新客户是否在列表中。但是,expResult 和测试结果完全相同,因为此时 ees 已经包含新客户。因此断言没有意义。

但是,您可以测试客户列表是否包含具有给定电子邮件的客户(或该客户的某些唯一 属性)。