2015-03-24 3 views
-1

Так что я тест, который должен проверить метод addNewCustomer, который делает это путем чтения из текстового файлаJAVA: JUnit испытание типа класса шпагат

@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. Есть идеи?

общественного класса CustomerDetailsList {

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(); 
} 

} Сам

+2

Этот блок-тест неверен на многих уровнях. Однако, чтобы придерживаться вашего вопроса: где вы сравниваете строку со списком? –

+0

Как это неправильно на многих уровнях? Что мне делать? –

+0

Честно говоря, я бы предложил вам купить хорошую книгу об модульном тестировании. Но только для того, чтобы подвести некоторые вещи: вы проводите интеграционное тестирование, ваше утверждение там не имеет смысла, результаты-утверждения должны быть предопределены, и у меня есть некоторые сомнения в этой попытке. –

ответ

0

В общем списке, вы должны проверить, если новый клиент находится в списке. Однако результат expResult и результат теста совпадают, поскольку в этот момент ees уже содержит нового клиента. Поэтому утверждение не имеет смысла.

Однако вы можете проверить, содержит ли Клиент список клиентов с данным электронным адресом (или уникальным свойством этого клиента).

+0

Хорошо, как бы я это испытал? –

+0

, если ваш список клиентов представляет собой какую-то коллекцию, пройдите и посмотрите, есть ли новый клиент. Можете ли вы опубликовать код CustomerDetailsList? –

+0

Несомненно, я отредактировал мой код –

Смежные вопросы