Найти в Дзене

Файлы в Intellij IDEA JAVA. Часть 2.

В предыдущей статье мы рассмотрели способ, как можно использовать текст из файла в вашем тесте. Научились отправлять большой текст, который не помещается в String, а также поменяли несколько значений в нашем тексте перед использованием в тесте. Сегодня продолжим изучать данную тему. Для примера мы будет использовать - https://restful-booker.herokuapp.com/ Сейчас мы умеем изменять файл для отправки в API с помощью метода replace. Однако этот метод изменяет текст только «мысленно», фактически файл остаётся прежним. Иногда такой подход может быть удобным. Но представим, что у нас есть цикл тестов, где в первом тесте нужно изменить файл, а во втором — использовать его. В таком случае метод replace не подойдёт, поскольку он не сохраняет изменения в файл. Покажу 2 метода, с помощью которых можно изменить нужный текст в файле. Будем использовать создание временного файла, после тогда как изменим в нём нужные строки, запишем эти изменения в основной, а временный удалим. File file = new File("F
Оглавление

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

Для примера мы будет использовать - https://restful-booker.herokuapp.com/

  • ✅ Создание файла
  • ✅ Подстановка значений из Файла с длинным текстом
  • ✅ Подстановка значений в Файл перед тестом
  • ♻ Подстановка значений с записью изменений в Файл

Подстановка значений с записью изменений в Файл

Сейчас мы умеем изменять файл для отправки в API с помощью метода replace. Однако этот метод изменяет текст только «мысленно», фактически файл остаётся прежним. Иногда такой подход может быть удобным.

Но представим, что у нас есть цикл тестов, где в первом тесте нужно изменить файл, а во втором — использовать его. В таком случае метод replace не подойдёт, поскольку он не сохраняет изменения в файл.

Покажу 2 метода, с помощью которых можно изменить нужный текст в файле.

1 способ:

Будем использовать создание временного файла, после тогда как изменим в нём нужные строки, запишем эти изменения в основной, а временный удалим.

-2
File file = new File("File/test.txt");
File fileWrite = new File("File/testWrite.txt");

Первая строка - наш файл.

Вторая - временный.

Далее будем использовать BufferedReader и BufferedWriter.

BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(fileWrite));

Далее используем цикл, в котором заменим все нужные нам слова

while((ln = br.readLine()) != null) {
bw.write(ln
.replace("текст", "ТЕКСТ")
);
bw.newLine();
}
br.close();
bw.close();
Files.move(fileWrite.toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING);

Скомпонуем с отправкой API из прошлой статьи и получим

-3

Все изменения будут записаны в основной файл, временный файл не создаваться.

-4
-5

Я не использовал try catch, для обработки исключений, вывел из в throws IOException.

Также в этом способе есть bw.newLine(); - что создаёт новую строку, можно убрать, в нашем случае это не особо нужно

Переместим это всё в метод, для удобства и компактный способ замены файла готов!

-6
-7

Как видим у нас заменилось 2 слова, как мы и указали

-8

2 способ:

Логика такая же, просто использование других инструментов. Оформим сразу в метод.

-9
Charset charset = StandardCharsets.UTF_8;
Path path = Paths.get(File);
Files.write(
path,
new String(Files.readAllBytes(path), charset).replace(Word, Replace)
.getBytes(charset)
);
-10

В следующей статье разберём, как возвращать файл в исходное состояние.

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию