当前位置: 首页 > 知识库问答 >
问题:

Spring的新手:如何覆盖测试应用程序的属性

翟俊名
2023-03-14

假设我有以下SoapApplication启动程序:

  @SpringBootApplication
    public class Application {

     public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
     }
    }

那么application.properties中的一些属性在哪里

public abstract class SoapTest {
    protected static ConfigurableApplicationContext server;
    protected static HttpClient client;

    @BeforeAll
    public static void setUp() {
        server = SpringApplication.run(Application.class,"--a=1","--b=2");
        server.start();

    }

    @AfterAll
    public static void tearDown() {

        server.stop();
    }

    }

我更喜欢设置test.properties

我试着做了这样的东西:

   @Configuration
    @EnableAutoConfiguration
    @PropertySource("file:testdata/test.properties")
    public class TestConfig {

     }

和SpringApplication.Run(testconfig.class,args);

System.SetProperty(“spring.config.location”,“file:testdata/test.propertes”);服务器=SpringApplication.Run(Application.Class);

是正确的吗?这对我来说是有效的,但在最佳实践中可能并不多?

共有1个答案

上官正志
2023-03-14

如果您选择使用Spring,我认为您应该考虑使用Spring WebServices,您可以使用Spring WebServices,这样您就可以对WebServices提供完整的测试支持

import static org...ws.test.server.RequestCreators.*;
import static org...ws.test.server.ResponseMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("spring-ws-servlet.xml")
public class ServerTest {

  @Autowired ApplicationContext ac;

  MockWebServiceClient mockClient;

  @Before 
  public void setUp() {
    mockClient = MockWebServiceClient.createClient(ac);
  }

  @Test
  public void test() {

    //given
    Source request = new StringSource("<MyRequest>...");

    //when, then
    Source response = new StringSource("<MyResponse>...");
    mockClient.sendRequest(withPayload(request)).andExpect(payload(response));

  }

}
 类似资料:
  • 我想为BPMN文件的JUnit测试添加测试覆盖率。我阅读了Camunda BPM流程测试报道,并使用Camunda Spring Boot Starter测试配置尝试了Spring示例,但我得到了一个异常。 代码:

  • 我的测试属性将被放置在生产属性中的属性覆盖。当时,我两人都给起了名字,但它不起作用,所以我就像这篇文章中说的那样,改成了并使用profile。现在看起来就像贝娄(kotlin): 在中,我只将此属性设置为,而在中,则设置为。 这个测试失败了。完整示例可在github上找到 Thx提前。

  • 我想开发一个API,使非程序员能够设置电子邮件属性,例如端口或主机。我发现我可以使用Spring Boot注释@ConfigurationProperties在类中加载属性。 我可以使用getPort检索属性,并使用setPort进行设置。 但是,使用此方法可以计算应用程序中的实际值。使用setPort或setHost时,属性文件不会更改。因此,当我重新启动应用程序时,更改会丢失。是否有办法实际更

  • 我想覆盖应用程序中定义的属性。属性通过cmd与应用程序中现有的其他属性。属性,但仅允许提供预定义值。 我需要的是通过应用程序中已经存在的命令行传递调度的参数。属性,它将更改在调度中定义的默认值。 我的问题是,当我从cmd执行jar文件时,它正在获取构建时存在于中的值。它没有覆盖现有值值。我想根据用户需要覆盖值。 Spring代码 应用属性 在cmd中

  • 我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app

  • 我有一个spring boot应用程序,它有一个应用程序YAML文件(src/main/resources/)。 我想覆盖部署的env部分(k8s)中的整个< code>props列表。在Kubernetes有什么办法吗?