정적 메소드를 모방하는 방법, 특히 정적 Files.class에서 모의하려고합니다.Mockito를 사용하여 java.nio.file.Files 정적 메소드를 모의 사용하십시오.
기본적으로,이 라인은 실행 할 때마다 : 나는 단지의 InputStream의 인스턴스 인 객체를 반환 할
Files.newInputStream(this.getPathObj(), StandardOpenOption.READ);
.
나는 모의하려고하는 정적 메서드를 사용하는 클래스입니다.
public class JavaFileInput{
private Path path;
public JavaFileInput(Path path){
this.path = path;
}
public InputStream getInputStream() throws IOException {
return Files.newInputStream(this.getPathObj(), StandardOpenOption.READ);
}
public Path getPathObj() {
return this.path;
}
}
이 분명히 작동하지 않는 일부 "사이비 틱"단위 테스트 코드입니다,하지만 난 그것이 내가 달성하기 위해 노력하고있어의 아이디어를 묘사 바랍니다.
@Mock(name="path")
private Path mockedPath = Mockito.mock(Path.class);
@InjectMocks
private JavaFileInput javaFile_MockedPath;
@Before
public void testSetup(){
javaFile_MockedPath = new JavaFileInput(mockedPath);
MockitoAnnotations.initMocks(this);
}
@Test
public void getNewInputStreamTest(){
//Setup
Mockito.when(Files.newInputStream(mockedPathObj, StandardOpenOption.Read)).thenReturn(new InputStream());
//Test
InputStream outputValue = javaFile_MockedPath.getInputStream();
//Validate
assertTrue(outputValue instanceof InputStream);
}
이것은 의미가 있습니까? 누구도 비슷한 것을해야만 한 적이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.
시간 내 주셔서 감사합니다.
PowerMock을 살펴볼 수 있습니다. – chrylis