gpt4 book ai didi

java - 你如何在@SpringBootTest 中传递程序参数?

转载 作者:行者123 更新时间:2023-12-04 16:08:31 28 4
gpt4 key购买 nike

我正在构建一个 Spring Boot 应用程序。我想像这样运行它:

 java -jar myjar.jar inputFile outputFile

我该如何写 @SpringBootTest为了这?我想使用 @SpringBootTest会使 Spring 在启动期间失败,因为我的一些代码会说,“你需要提供一个 inputFile 和 outputFile”。有没有办法在使用 @SpringBootTest 时传递程序参数?

I'm inferring from this answer我可能必须使用 SpringApplicationBuilder 来做到这一点。

我以为我有答案,但我错了。这些不正确的信息可能对某些人仍然有用:

(这个信息是错误的。我认为有些参数不能在代码中作为属性引用,但不是全部。我仍然不知道如何在 @SpringBootTest 中获取应用程序参数)我很困惑,因为我没有不懂术语。注释有一个“属性”参数。我以为是指向一个属性文件, but the documentation says :

Properties in form key=value that should be added to the Spring Environment before the test runs.



术语难题的另一部分是我所谓的“程序参数”,Spring 文档将其称为“属性”。

这是一些额外的相关文档: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-application-arguments

这是一种解决方法(不是答案)。你可以这样做:
private SpringApplicationBuilder subject;

@Before
public void setUp() throws Exception {
subject = new SpringApplicationBuilder(Application.class);
}

@Test
public void requiresInputAndOutput() throws Exception {

thrown.expect(IllegalStateException.class);
subject.run();
}

@Test
public void happyPathHasNoErrors() throws Exception {

subject.run(EXISTING_INPUT_FILE, "does_not_exist");
}

我不太喜欢这个。它阻止我使用 @Autowired在我的测试中的其他地方。

最佳答案

如果您的程序参数是

--arg1=val1
springboot 2.2.0 之前的版本
您可以使用
@SpringBootTest({"arg1=val1"})
springboot 2.2.0 之后
您可以使用
@SpringBootTest(args={"--arg1=val1"})

关于java - 你如何在@SpringBootTest 中传递程序参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com