#java #junit #temporary-files
#java #junit #временные файлы
Вопрос:
Я пытаюсь записать несколько строк в файл, созданный TemporaryFolder. Мне нужно предоставить 3 строки: Line1 a
Line2 b c
Line 3
1) Я делаю это, но это ничего не добавляет. Длина по testedContent
-прежнему равна 0. Что я делаю не так? :
private ContentFileRetriever contentFileRetriever = new ContentFileRetrieverService();
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@Before
public void setup() {
}
@Test
public void getContentFile() throws IOException {
File textFile = tempFolder.newFile("testText.txt");
String pathFile = textFile.getPath();
FileWriter fileWriter = new FileWriter(textFile.getName());
fileWriter.write("Line1 a");
fileWriter.write("Line2 b c");
fileWriter.write("Line3 3");
String[] testedContent = contentFileRetriever.getContentFile(pathFile);
String[] expected = {"Line1 a", "Line2 b c", "Line 3"};
assertArrayEquals(expected, testedContent);
}
2) Должен ли я делать это в setup с @Before
помощью метода или делать это внутри test?
3) Я прочитал, что эта папка будет удалена автоматически, поэтому мне не нужно выполнять .deleteOnExit()
textFile
?
Комментарии:
1. Попробуйте очистить средство записи и закрыть его, используя OutputStreamWriter#flush и OutputStreamWriter#close методы OutputStreamWriter
2. @ValentinCarnu добавлено
fileWriter.flush();
до и послеfileWriter.write("Line1 a");
, но по-прежнему 0 длины.3. Попробуйте создать свой
FileWriter
объект с вашимFile
объектом в качестве параметра конструктора, а затем очистить и закрыть его перед чтением из файла.`.4. второе, что я бы попробовал, это вызвать
contentFileRetriever.getContentFile
метод сtextFile.getAbsolutePath()
параметром as вместоtextFile.getPath()
5. Я сделал: pastebin.com/jHGCTLTF и
testedContent.length = 1
я пытался сбрасывать данные для каждой записи в файл, но ничего не произошло.
Ответ №1:
Я вижу две проблемы:
- Вы открываете свой объект FileWriter с именем файла вместо самого файла
- Вы не закрываете свой FileWriter
Это работает для меня:
@Test
public void getContentFile() throws IOException {
File textFile = tempFolder.newFile("testText.txt");
FileWriter fileWriter = new FileWriter(textFile);
fileWriter.write("Line1 a");
fileWriter.write("Line2 b c");
fileWriter.write("Line3 3");
fileWriter.close();
}