2016-08-12 5 views
2

FileWriter을 사용하여 파일을 만들지 만 파일이 실제로 존재하지 않는 방법에 대해 JUnit 테스트 사례를 작성하고 있습니다. 나는 실제 파일을 만들지 않고 File Object를 조롱하기 위해 PowerMockito을 사용하고있다. 내 테스트는 통과하지만 프로젝트의 컨텍스트 루트에 Mock for file,hashCode이라는 이름의 파일을 만듭니다. 이 파일을 만드는 것을 피할 수있는 방법이 있습니까? 비슷한 질문이 있지만 왜 그런 일이 일어나는지 명확하지 않습니다. 따라서 디버깅하는 동안 코드가 new FileWriter에 도달하면 파일이 만들어졌습니다.Mockito 및 PowerMockito를 사용하여 파일 조롱

감사합니다,

JUnit 테스트 : 테스트중인

@Test 
public void testCreateCSVFile() throws Exception { 
    File mockFile = Mockito.mock(File.class); 
    PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(mockFile); 
    rest of the test... 
} 

방법 : 당신은 잘못된 필드를 조롱하는

public void createCSVFile(List<IUiIntegrationDto> intgList, String fileName) throws Exception { 
    FileWriter fileWriter = new FileWriter(fileName); 
    rest of the code... 
} 
+0

이름이 아닌 메서드에 작성기를 전달하십시오. – chrylis

+0

효과가있었습니다. 이름 대신 FileWriter를 전달하고 있는데 더 이상 파일을 만들지 않습니다. 감사. – Jaykumar

+0

단지 레코드 용입니다. 테스트중인 클래스에 종속성 삽입을 사용하여 ** 파일 작성기 개체를 ** 제공하는 경우 PowerMock으로 변경할 필요가 없습니다. 테스트 가능한 코드 작성의 핵심은 프로덕션 코드에서 ** new ** 문을 사용하는 데주의해야한다는 것입니다 (자세한 내용은 https://www.youtube.com/playlist?list=PLD0011D00849E1B79 참조). – GhostCat

답변

2

. FileWriter을 모의해야합니다. 실제 파일 쓰기를 수행하는 사람입니다.

+0

그리고 그는 어쨌든'Writer'를 사용할 수도 있습니다. – chrylis

+0

대신 FileWriter를 조롱했습니다. 이제 "Mock for FileWriter, hashCode"라는 이름으로 파일을 만듭니다. – Jaykumar

+0

@Jaykumar - 전체 코드로보기 –