2017-02-13 14 views
0

У меня есть кусок кода с примеркой поймать блок:Junit с Exception

public static void writeExcelToFile(String outFileName, HSSFWorkbook workBook) throws IOException{ 
    File file = null; 
    FileOutputStream fileOutputStream = null; 
    try { 
     file = getFileByFileName(outFileName); 
     File parent = file.getParentFile(); 
     Path filePath = parent.toPath(); 
     if (Files.notExists(filePath) && !parent.mkdirs()) { 
      throw new IOException("Couldn't create dir: " + parent); 
     } 
     fileOutputStream = new FileOutputStream(file); 
     workBook.write(fileOutputStream); 
    } catch (FileNotFoundException fileNotFoundException) { 
     LOGGER.error("File path is invalid, file not found ", fileNotFoundException); 
     throw fileNotFoundException; 
    } catch (IOException ioException) { 
     LOGGER.error("Exception occured while reading writing file ", ioException); 
     throw ioException; 
    } catch (Exception exception) { 
     LOGGER.error("Exception occured ", exception); 
     throw exception; 
    } finally { 
     if (fileOutputStream != null) { 
      fileOutputStream.close(); 
     } 
    } 
    file.setWritable(true); 
} 

я написал следующее JUnit для блока улова:

//#1: FileNotFoundException 
@Test(expected = java.io.FileNotFoundException.class) 
public void testWriteExcelToFileException() throws IOException { 
    PowerMockito.mockStatic(KnewtonCIExcelWriter.class); 
    PowerMockito.doThrow(new java.io.FileNotFoundException()).when(KnewtonCIExcelWriter.class); 
    KnewtonCIExcelWriter.writeExcelToFile(anyString(), anyObject()); 
} 

//#2: IOException 
@Test(expected = IOException.class) 
public void testWriteExcelIOException() throws IOException { 
    PowerMockito.mockStatic(KnewtonCIExcelWriter.class); 
    PowerMockito.doThrow(new IOException()).when(KnewtonCIExcelWriter.class); 
    KnewtonCIExcelWriter.writeExcelToFile(anyString(), anyObject()); 
} 

//#3: Exception 
@Test(expected = Exception.class) 
public void testWriteExcelException() throws IOException { 
    PowerMockito.mockStatic(KnewtonCIExcelWriter.class); 
    PowerMockito.doThrow(new Exception()).when(KnewtonCIExcelWriter.class); 
    KnewtonCIExcelWriter.writeExcelToFile(anyString(), anyObject()); 
} 

Однако, только последние, # 3 июня проходит. # 1 и # 2 дает java.lang.AssertionError: ожидаемое исключение: java.io.FileNotFoundException и java.lang.AssertionError: ожидаемое исключение: java.io.IOEXception.

Question: 1) How to get the #1 and #2 JUnit passing? 2) Am I catching the correct exceptions?

+0

Пожалуйста, прочтите powermock документацию, 'PowerMockito.doThrow (новый Exception()), когда (KnewtonCIExcelWriter.class).' Это отсутствует имя функции –

+1

Примечание: не блокировать, регистрировать и отменять исключения. Запишите их или сверните их; не делайте того и другого. –

ответ

0

powermockito синтаксис на doThrow, когда должен быть

when(KnewtonCIExcelWriter.class, "your method", argument (you can user matcher)); 

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

  • Нет связанных вопросов^_^