2013-07-15 3 views
2

Я пытаюсь проверить дату, которая находится в электронной таблице, созданной с помощью Apache POI. Когда я делаю System.out.print, переменная Date и содержимое ячейки одинаковы. Почему тест не работает?JUnit Test Spreadsheet с использованием Apache POI

@Test 
public void testSpreadsheetCont() throws Exception { 
    Date date = new Date(); 
    boolean success = false; 
    FileInputStream fileInputStream = new FileInputStream("File Location.xls"); 
    HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream); 
    HSSFSheet worksheet = workbook.getSheetAt(0); 
    HSSFRow row1 = worksheet.getRow(2); 
    HSSFCell cell0 = row1.getCell(0); 
    System.out.println(cell0.getDateCellValue()); 
    System.out.println(date); 

    if (cell0.getDateCellValue() == date) { 
     success = true; 
    } else { 
     success = false; 
    } 
    Assert.assertTrue(success); 
} 

Я думаю, что ошибка заключается в том, как я форматирую дату в классе, который генерирует электронную таблицу. Там он отформатирован как ("mm/dd/yyyy hh:mm"). Но когда я форматирую переменную даты до ("mm/dd/yyyy hh:mm") и пытаюсь сравнить два элемента, это не увенчалось успехом.

Date date = new Date(); 
SimpleDateFormat ft = new SimpleDateFormat("mm/dd/yyyy hh:mm"); 
if (cell0.getDateCellValue().toString() == ft.format(date)) { 
    success = true; 
} else { 
    success = false; 
} 

ответ

2

использование нижеследующий для сравнения. Возможно, это и есть причина.

if(cell0.getDateCellValue().compareTo(date)==0){ 
    success = true; 
    }else{ 
     success = false; 
    } 
+0

@eric. Поэтому вы решили свою проблему. Правильно? – Sankumarsingh

+0

Нет, еще нет. Я добавил примечание наверху, где, по-моему, ошибка. –

+0

если System.out.println (cell0.getDateCellValue()); и System.out.println (дата); все еще дает тот же результат, мое предложение конвертируется как в строку, так и затем сравнивает его. if (cell0.getDateCellValue(). ToString(). Equals (date.toString())) – Sankumarsingh

1

Неудивительно, что это не работает, потому что вы сравниваете две ссылки по дате - вы всегда окажетесь там ложно.