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'?
这是一个两步过程.
首先,添加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
尝试在 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 的外部属性、日志记录和其他功能仅安装在上下文中。