Spring boot тестирование с аргументами из консоли

Я написал тесты для приложения на буте ,однако он не видит аргумент, который я ему передаю. В исходное приложение аргументы передаются так : java -jar application.jar /path/to/file.csv, где /path/to/file.csv – путь до файла с правилами конвертации

@ContextConfiguration(classes = Application.class)
@SpringBootTest(
    classes = Application.class,
    args = {"src/test/resources/test.csv"})
@AutoConfigureMockMvc
class ConvertControllerTest {

  @Autowired private MockMvc mockMvc;

  @Test
  void convert() throws Exception {
    RequestBuilder requestBuilder =
        MockMvcRequestBuilders.post("/convert")
            .content("{\n" + " \"from\": \"м/ с\",\n" + " \"to\": \"км /час\"\n" + "}")
            .contentType(MediaType.APPLICATION_JSON);

    MvcResult result = mockMvc.perform(requestBuilder).andReturn();
    assertEquals("3.6", result.getResponse().getContentAsString());
  }

Как видно, аргумент передаётся через параметры args;

У меня есть бины, которые инициализируются в AppConfig:

@Configuration
public class AppConfig {

  @Value("${additional.filename:systemCsv}")
  private String path;

  @Bean
  public FileRuleReader fileRuleReader() {
    return new FileRuleReader();
  }

  @Bean
  public RuleCreater ruleCreater() {
    RuleCreater nodeCreater =
        new RuleCreater(fileRuleReader().read(new File(Application.filePath)));
    nodeCreater.setAdditionalFilePath(path);
    return nodeCreater;
  }
}

Тут стоит обратить внимание на Application.filePath , где filepath - это тот самый аргумент, который передаётся из cli

И сам Application:

@Slf4j
@SpringBootApplication
@Import(AppConfig.class)
public class Application implements ApplicationRunner {

  @Autowired private static final ReconTool reconTool = new ReconTool();
  public static String filePath = "test.csv";

  public static void main(String[] args) {
    reconTool.run(args);

    SpringApplication.run(Application.class, args);
  }

  @Override
  public void run(ApplicationArguments args) {
    log.info("PATH TO FILE FROM APPLICATION ARGUMENTS  -  {}", args.getSourceArgs());

    filePath = Paths.get(args.getSourceArgs()[0]).normalize().toAbsolutePath().toString();

    log.info("Finale path to file{}", filePath);
  }

  @Component
  public static class ReconTool implements CommandLineRunner {

    @Override
    public void run(String... args) {
      log.info("PATH TO FILE FROM CLR  -  {}", args);

      filePath = Paths.get(args[0]).normalize().toAbsolutePath().toString();

      log.info("Finale path to file{}", filePath);
    }
  }
}

Я пытался исправить проблему используя CommandLineRunner и ApplicationRunner, однако, как я понял, в моём случае это не подходит. Как видно ниже, один из способов внедряет путь до запуска spring, а второй уже после инициализации бинов. Как можно передать аргумент командной строки в filepath сразу после запуска spring ? Или это вообще не так делается ?

11:43:34.039 [main] INFO ru.itis.Application - PATH TO FILE FROM CLR  -  C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
11:43:34.044 [main] INFO ru.itis.Application - Finale path to fileC:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
11:43:34.290 [restartedMain] INFO ru.itis.Application - PATH TO FILE FROM CLR  -  C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
11:43:34.290 [restartedMain] INFO ru.itis.Application - Finale path to fileC:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.3)

2021-03-27 11:43:34.967  INFO 22320 --- [  restartedMain] ru.itis.Application                      : Starting Application using Java 15.0.1 on LAPTOP-TTFM6CUT with PID 22320 (C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\UniveresalConverter\target\classes started by xsolla in C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\UniveresalConverter)
2021-03-27 11:43:34.969  INFO 22320 --- [  restartedMain] ru.itis.Application                      : No active profile set, falling back to default profiles: default
2021-03-27 11:43:35.042  INFO 22320 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-03-27 11:43:35.042  INFO 22320 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-03-27 11:43:36.416  INFO 22320 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 80 (http)
2021-03-27 11:43:36.428  INFO 22320 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-03-27 11:43:36.429  INFO 22320 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.43]
2021-03-27 11:43:36.537  INFO 22320 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-03-27 11:43:36.537  INFO 22320 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1493 ms
2021-03-27 11:43:36.600  INFO 22320 --- [  restartedMain] f.a.AutowiredAnnotationBeanPostProcessor : Autowired annotation is not supported on static fields: private static final ru.itis.Application$ReconTool ru.itis.Application.reconTool
2021-03-27 11:43:36.832  INFO 22320 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-03-27 11:43:37.144  WARN 22320 --- [  restartedMain] o.s.b.a.f.FreeMarkerAutoConfiguration    : Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)
2021-03-27 11:43:37.192  INFO 22320 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-03-27 11:43:37.256  INFO 22320 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 80 (http) with context path ''
2021-03-27 11:43:37.273  INFO 22320 --- [  restartedMain] ru.itis.Application                      : Started Application in 2.967 seconds (JVM running for 4.091)
2021-03-27 11:43:37.277  INFO 22320 --- [  restartedMain] ru.itis.Application                      : PATH TO FILE FROM APPLICATION ARGUMENTS  -  C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
2021-03-27 11:43:37.277  INFO 22320 --- [  restartedMain] ru.itis.Application                      : Finale path to fileC:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
2021-03-27 11:43:37.277  INFO 22320 --- [  restartedMain] ru.itis.Application                      : PATH TO FILE FROM CLR  -  C:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv
2021-03-27 11:43:37.277  INFO 22320 --- [  restartedMain] ru.itis.Application                      : Finale path to fileC:\Users\xsolla\Desktop\Allwork\UniversityWork2Course\SecondSemester\ConturWork1\src\main\resources\test.csv

Ответы (0 шт):