Так что я тест, который должен проверить метод 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();
}
} Сам
Этот блок-тест неверен на многих уровнях. Однако, чтобы придерживаться вашего вопроса: где вы сравниваете строку со списком? –
Как это неправильно на многих уровнях? Что мне делать? –
Честно говоря, я бы предложил вам купить хорошую книгу об модульном тестировании. Но только для того, чтобы подвести некоторые вещи: вы проводите интеграционное тестирование, ваше утверждение там не имеет смысла, результаты-утверждения должны быть предопределены, и у меня есть некоторые сомнения в этой попытке. –