如何在application.properties

时间:2019-05-07 04:58:30

标签: spring spring-boot

我正在运行一个带有大量测试的Spring Boot项目,我想使用扩展报告。我已经创建了TestExecutionListener,并且在一项测试中使用了该设置。

我不想在所有测试中都复制相同的注释。

我需要在哪里设置TestExecutionListener?如何?

是否可以在application.properties中进行设置?

1 个答案:

答案 0 :(得分:0)

spring-test模块在​​其META-INF/spring.factories属性文件中声明所有默认的TestExecutionListeners。

创建一个简单的Spring应用程序:

MyBean:

@Component
public class MyBean {
  public void doSomething() {
      System.out.println("-- in MyBean.doSomething() method --");
  }
}

AppConfig:

@Configuration
@ComponentScan
public class AppConfig {
}

编写一个TestExecutionListener:

public class MyListener implements TestExecutionListener {
  @Override
  public void beforeTestClass(TestContext testContext) throws Exception {
      System.out.println("MyListener.beforeTestClass()");
  }

  @Override
  public void prepareTestInstance(TestContext testContext) throws Exception {
      System.out.println("MyListener.prepareTestInstance()");

  }

  @Override
  public void beforeTestMethod(TestContext testContext) throws Exception {
      System.out.println("MyListener.beforeTestMethod()");
  }

  @Override
  public void afterTestMethod(TestContext testContext) throws Exception {
      System.out.println("MyListener.afterTestMethod()");
  }

  @Override
  public void afterTestClass(TestContext testContext) throws Exception {
      System.out.println("MyListener.afterTestClass");
  }
}

编写JUnit测试:

可以通过@TestExecutionListeners批注注册TextExecutionListener:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AppConfig.class)
@TestExecutionListeners(value = {MyListener.class,
      DependencyInjectionTestExecutionListener.class})
@TestPropertySource("/test.properties")
public class MyTests {

  @Autowired
  private MyBean myBean;

  @Test
  public void testDoSomething() {
      myBean.doSomething();
  }
}

详细信息:https://www.logicbig.com/tutorials/spring-framework/spring-core/test-execution-listener.html

编辑:

声明测试属性的来源

可以通过@TestPropertySource的location或value属性来配置测试属性文件,如下例所示。

同时支持传统属性文件格式和基于XML的属性文件格式file-例如“ classpath:/com/example/test.properties”或“ file:///path/to/file.xml”。

每个路径将被解释为一个Spring资源。普通路径(例如“ test.properties”)将被视为相对于定义测试类的程序包的类路径资源。以斜杠开头的路径将被视为绝对类路径资源,例如:“ / org / example / test.xml”。将使用指定的资源协议加载引用URL的路径(例如,以classpath:,file:,http:等开头的路径)。不允许使用资源位置通配符(例如* /。properties):每个位置的值必须恰好等于一个.properties或.xml资源。

@ContextConfiguration
@TestPropertySource("/test.properties")
public class MyTests {
    // class body...
}

更多信息:https://docs.spring.io/autorepo/docs/spring-framework/4.2.0.RC2/spring-framework-reference/html/integration-testing.html

https://www.baeldung.com/spring-test-property-source