2015-03-24 3 views
2

Как тестировать массивы типа класса? Я проводил исследования и понять assertArray Ланг, но я не уверен в том, как это сделать, когда массив не строкаJAVA: чтение тестов JUNIT из массива классов файлов

@Test 
     public void testReadProductDataFile() throws Exception { 
      System.out.println("readProductDataFile"); 
      File inputFile = new File("ProductData.txt"); 
      Product[] expResult = null; 
      Product[] result = InputFileData.readProductDataFile(inputFile); 
      assertArrayEquals(expResult, result); 
      // TODO review the generated test code and remove the default call to fail. 
      fail("The test case is a prototype."); 
     } 

Этот метод сам считывает информацию из текстового файла, разбивает его в массив продукта. Готовые

public void testReadProductDataFile() throws Exception { 
     System.out.println("readProductDataFile"); 
     File inputFile = new File("ProductData.txt"); 
     Product[] expResult = { new Product("PA/1234",153),new Product("PV/5732",25), 
      new Product("Au/9271",172),new Product("DT/9489",95) 
       ,new Product("HY/7195",235),new Product("ZR/7413",159) 
       ,new Product("bT/4674",725),new Product("LR/4992",629) 
       ,new Product("Xk/8536",112),new Product("kD/9767",559)}; 
     Product[] result = InputFileData.readProductDataFile(inputFile); 
     assertArrayEquals(expResult, result); 
    } 

Получение этой ошибки

arrays first differed at element [0]; expected: supplierproject.Product<Product Code: PA/1234 
Price Per Unit: 153.0 
> but was: supplierproject.Product<Product Code: PA/1234 
Price Per Unit: 153.0 
> 
junit.framework.AssertionFailedError 
    at supplierproject.InputFileDataTest.testReadProductDataFile(InputFileDataTest.java:55) 

Я не могу увидеть разницу и его не позволяя мне увидеть разницу, как это делает иногда ..

+1

Нет никакой разницы, если массивы имеют тип String или любой другой. Ваш код действителен (кроме 'expResult' должен быть инициализирован) –

+0

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

ответ

0

Там нет никакой разницы, если массивы имеют тип String или любой другой. Ваш код действителен.

За исключением expResult, следует инициализировать, например.

Product[] expResult = { new Product("product 1"), new Product("product 2") }; 

и ProductData.txt файл должен содержать данные, которые будут читать с аналогичными продуктами (assertArrayEquals сравнивать предметы, используя equals() метод).

+0

Спасибо, человек! буквально не мог найти никакой документации по этому поводу! –

+0

Привет, человек. Я получаю эту ошибку. Я разместил ее в редакторе –

+1

, убедитесь, что у вас есть метод 'equals()' в классе Product, который сравнивает как код, так и цену. –

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