У меня есть приложение springboot 2, которое запускается из командной строки. Одним из аргументов командной строки является fileName с именем batchNo в именовании. Я устанавливаю свое значение fileName application.properties с помощью fileName из командной строки arg. Пример batch-1234.csv
В моем файле ApplicationConfig я читаю имя файла из файла application.properties следующим образом.
@ToString
@Setter
@Getter
@Configuration
@ConfigurationProperties(prefix = "hri")
public class ApplicationConfig {
@Value("${company.file}")
private String file;
public String getBatchNo() {
return parseBatchNo(file);
}
public String getHomecareDetailPath() {
return filePathProvider.getFilePath("batch-" + getBatchNo() + ".csv");
}
private static String parseBatchNo(String file) {
if (batchNo == null) {
batchNo = file.substring((file.lastIndexOf("-") + 1), (file.length() - 4));
}
return batchNo;
}
}
Моя цель - иметь возможность динамически устанавливать это имя файла для каждого отдельного теста.
Пример
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AdapLoadApplication.class)
@AutoConfigureTestDatabase
public class CorporateServiceTest {
@Autowired
private ApplicationConfig config;
@Test
public void convertCsvToBean() throws IOException {
//Set file
config.setFile("batch-9999.csv);
}
@Test
//Is there an annotation to set the Application.properties file for each test?
public void test2() throws IOException {
//Set file
config.setFile("batch-8888.csv);
}
}
Как я могу динамически настроить файл, чтобы лучше управлять тестом? В настоящее время мы используем один и тот же файл и много копируем файл, перезаписывая тестовый файл.
Я просто хотел бы уточнить, я не собираюсь просто создавать новый компонент ApplicationConfig в моем классе Test, а также устанавливать файл и читать один и тот же файл из каждого отдельного теста. Я хотел бы установить это имя файла в начале каждого отдельного теста.