Тест интеграции Java и Junit для файловой системы - PullRequest
2 голосов
/ 11 марта 2019

У меня есть этот класс:

public class FooFileRepo {

@Override
public File getDirectory(String directoryPath) {
    ...     
    File directory = new File(directoryPath);
    ...
    return directory;
}

@Override
public void mkdirs(File f) {
    ...
    f.getParentFile().mkdirs();
}

public void writeFile(String path, String content) throws FileNotFoundException, UnsupportedEncodingException{
    ...
    try (PrintWriter writer = new PrintWriter(path, "UTF-8");) {
        writer.println(content);
    }
}   

}

Как можно смоделировать работу файловой системы для написания модульных тестов для этого класса?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Для такого простого теста, вероятно, лучше использовать настоящую файловую систему. В качестве альтернативы вы можете построить фасад для работы с файлом и легко смоделировать этот фасад.

https://junit.org/junit4/javadoc/4.12/org/junit/rules/TemporaryFolder.html

public static class HasTempFolder {
@Rule
public TemporaryFolder folder= new TemporaryFolder();

@Test
public void testUsingTempFolder() throws IOException {
  File createdFile= folder.newFile("myfile.txt");
  File createdFolder= folder.newFolder("subfolder");
  // ...
 }
}

Также прочитайте этот ответ: https://stackoverflow.com/a/17164103/516167

0 голосов
/ 11 марта 2019

Использование PowerMock

       @RunWith(PowerMockRunner.class)
       @PrepareForTest({ Printwriter.class })
       public class SampleTestClass {

        @Mock
        private PrintWriter mockPrintWriter;

        @Before
        public void init() throws Exception {
          PowerMockito.mockStatic(FileUtils.class);
        }

        @Test
        public void test() throws IOException {
        }   
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...