В моем тестовом классе я использую временную папку junit. Затем я создаю новый файл PDF в этой папке, пишу в этот файл и делаю свои утверждения. Мой блок-тест выглядит следующим образом:Использовать ту же самую временную папку junit для нескольких модульных тестов
@Test
public void testGeneratePdfIntegration1() throws Exception {
InputStream isMxml = SuperBarcodeProcTest.class.getResourceAsStream(RES_MXML_JOB_1);
InputStream isThumb = SuperBarcodeProcTest.class.getResourceAsStream(RES_PNG_JOB_1);
InputStream isPpf = SuperBarcodeProcTest.class.getResourceAsStream(RES_PPF_JOB_1);
Path destination = tempFolder.newFile("target1.pdf").toPath();
superBarcodeProc = new SuperBarcodeProc(isThumb, isMxml, isPpf, destination.toString());
superBarcodeProc.setDescription("Bogen: 18163407_01_B04_ST_135gl_1000_1-1");
superBarcodeProc.setBarcode("18163407_01");
superBarcodeProc.generatePdf();
assertTrue(Files.exists(destination));
assertTrue(Files.size(destination) > 1024);
}
После завершения теста временная папка удаляется. Проблема в том, что у меня есть несколько модульных тестов, которые генерируют PDF-файл с разными настройками в той же папке temp, что и тест в коде, который я предоставил, и когда я запускаю все тесты в классе, только первые успевают. Я предполагаю, что после того, как первый тест завершился, папка temp исчезла, а другие тесты завершились с ошибкой IOException, говоря, что система не может найти данный путь. Вопрос в том, как я могу использовать одну и ту же папку для нескольких модульных тестов без удаленной папки или это невозможно, и мне нужно создать временную папку для каждого тестового примера?
Попробуйте создать файлы внутри метода с @Before. Файл будет создан для каждого создаваемого вами теста. – programmer23
Обратите внимание, что отсутствие разделения между тестовыми случаями на самом деле является антипаттерном и может привести к недетерминированным результатам. Кроме того, тест, который генерирует PDF, вряд ли можно назвать тестом «unit» *. – kryger
Если вы используете classrule, каталог temp не будет очищаться между тестовыми прогонами. – eckes