Методы тестирования с помощью Junit с макетом

#java #junit #mocking #mockito

#java #junit #издевательство #mockito

Вопрос:

У меня есть эти два метода, из-за которых у меня возникают проблемы с реализацией тестов с использованием Mock. Как я должен пройти тест?

У меня возникли проблемы с получением каталога Jboss без необходимости запускать System.getProperty («jboss.server.temp.dir»);

 public ResourceRenderer getImagem(String path) throws IOException {

        String resourceLocation = this.getResoureLocation(path);

        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(caminhoImagemClasspath);
        File file = new File(resourceLocation);
        FileUtils.copyInputStreamToFile(resourceAsStream, file);
        return ResourceRenderer.getInstance(file.getAbsolutePath(), false);
    }

public String getResoureLocation(String path) {
    String dirJboss= System.getProperty("jboss.server.temp.dir");
    if (dirJboss != null) {
        return dirJboss   File.separator   caminhoImagemClasspath;
    }
    return System.getProperty("java.io.tmpdir")   File.separator   path;
}
 

Ответ №1:

Если вы хотите использовать Mocks, вы можете извлечь вызовы системных свойств в их собственные методы и имитировать возвращаемое значение этих методов.

Вы также можете использовать System.setProperty и установить значения, которые вам нужны.

Но, если я правильно понимаю, вы пытаетесь протестировать getResourceLocation? В этом случае вам не нужно было бы проверять свойства, а скорее устанавливать для них что-то и проверять логику вашего метода, то есть 1) конкатенацию строк в последней строке и 2) поведение, если dirJboss доступен.

Комментарии:

1. Я не могу получить каталог Jboss. Тест не запускается Jboss как мне восстановить этот временный каталог Jboss?