如何添加登录测试(spring boot)?

Pau*_*lia 5 java testing logging spring-boot

我想在我的项目中添加日志记录(用于控制台),在测试部分中通过spring boot添加.我有我的考试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
public class MyTest {

    private final static org.slf4j.Logger LOGGER = LoggerFactory.getLogger(MyTest.class);

    @Autowired
    public UserDao userDao;

    @Test
    public void test1() {
        LOGGER.info("info test");
        LOGGER.debug("debug test");
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的测试配置:

@Configuration
@EnableJpaRepositories("example.dao")
@ComponentScan(basePackageClasses = { MyServiceImpl.class})
@EntityScan({"example.model"})
@Import({DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class TestConfig {

}
Run Code Online (Sandbox Code Playgroud)

我在test/resource中创建application.properties文件.Gradle将我的资源文件夹视为测试资源.我的application.properties:

logging.level.= INFO
logging.level.tests.= INFO
logging.level.org.hibernate= INFO
logging.level.org.springframework= INFO
logging.level.org.apache.cxf= INFO
Run Code Online (Sandbox Code Playgroud)

但是当我进行测试时,我有:

16:59:17.593 [main] INFO  tests.MyTest - info test
16:59:17.594 [main] DEBUG tests.MyTest - debug test
Run Code Online (Sandbox Code Playgroud)

在控制台,为什么?我只设置'INFO'(logging.level.= INFO),为什么'DEBUG'在控制台?怎么设置好'INFO'

Dir*_*ski 6

这是一个两步过程.

首先,添加spring-boot-starter-test为测试依赖项.然后告诉JUnit使用ContextLoader刚刚添加的依赖项.

更改

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
public class MyTest {
    ...
Run Code Online (Sandbox Code Playgroud)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class},     
                      loader = SpringApplicationContextLoader.class)
public class MyTest {
    ...
Run Code Online (Sandbox Code Playgroud)

上下文加载器在spring-boot-starter-test第一步中添加,并且通常由初始化魔术完成ApplicationBootstrapper.

根据您使用的弹簧引导版本,还有其他一些可能性(例如使用@SpringApplicationConfiguration代替@ContextConfiguration).您可以在今年春季博客中了解更多相关信息:https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4


jst*_*jst 0

尝试在 MyTest 类上添加 @SpringBootConfiguration 而不是 @ContextConfiguration。

请遵循参考文档中的示例: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-testing-spring-boot-applications

Spring Boot 应用程序只是一个 Spring ApplicationContext,因此除了通常使用普通 Spring 上下文执行的操作之外,无需执行任何特殊操作即可对其进行测试。但需要注意的一件事是,如果您使用 SpringApplication 创建 Spring Boot,则默认情况下,Spring Boot 的外部属性、日志记录和其他功能仅安装在上下文中。