我在spring-boot中创建了一个Web应用程序。我正在使用testNG为我的业务层编写单元测试。
我创建了Application类
@SpringBootApplication
public class TestApplication
{
public static void main(String[] args)
{
SpringApplication.run(TestApplication.class, args);
}
@Bean
Mapper mapper()
{
List<String> mappingFiles = new ArrayList<String>();
mappingFiles.add("dozer-mappings.xml");
return new DozerBeanMapper(mappingFiles);
}
}
我的测试类看起来像
@ContextConfiguration(classes = { TestApplication.class })
public class CommissionRuleServiceTest extends AbstractTestNGSpringContextTests
{
@InjectMocks
@Autowired
MyService
@Mock
MyDAO;
@BeforeMethod
public void initMock()
{
MockitoAnnotations.initMocks(this);
}
@Test(dataProvider = "....")
......
......
}
当我运行项目时,它会显示休息登录控制台,只需几次小测试就需要20.00秒。 日志中的一些语句是
DEBUG o.s.c.i.s.PathMatchingResourcePatternResolver - 搜索目录 DEBUG o.s.c.a.ConfigurationClassPostProcessor DEBUG o.s.c.a.ClassPathBeanDefinitionScanner DEBUG o.s.c.i.s.PathMatchingResourcePatternResolver DEBUG o.s.b.f.s.DefaultListableBeanFactory DEBUG o.a.c.b.converters.ArrayConverter DEBUG org.dozer.loader.xml.XMLParser DEBUG org.hibernate.cfg.SettingsFactory DEBUG o.h.cfg.annotations.CollectionBinder DEBUG o.h.cfg.annotations.TableBinder DEBUG o.h.p.w.spi.MetamodelGraphWalker - 访问属性路径:MyEntity DEBUG o.s.b.f.s.DefaultListableBeanFactory DEBUG org.hibernate.SQL
为什么要这样一个&#34;休?&#34;时间?我该怎么办?
答案 0 :(得分:0)
调查:
@SpringBootApplication
注释等效于以下默认属性的注释:
@Configuration
- 表示该类包含一个或多个@Bean
方法。与@ComponentScan
一起播放。
@EnableAutoConfiguration
- 将尝试猜测并配置您可能需要的bean。 这可能会导致一些性能下降,具体取决于您的应用程序。
@ComponentScan
- 配置组件扫描。由于未定义包,因此将使用此注释从类的包中进行扫描。如果没有更多的代码,就无法给出准确的猜测,但我认为大部分性能损失是由Spring Boot初始化引起的。
答案 1 :(得分:0)
默认情况下,Spring Boot中的日志记录级别设置为INFO,可能你改变了吗? 将其添加到application.properties或您需要的任何其他级别(TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF)
logging.level.root = WARN
如前所述,自动配置可能会影响性能。 您可以使用排除某些不需要的配置。 这是一个例子(随机集 - 不要盲目跟随)
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
ErrorMvcAutoConfiguration.class, SecurityAutoConfiguration.class, SessionAutoConfiguration.class,
ValidationAutoConfiguration.class, ThymeleafAutoConfiguration.class, WebSocketAutoConfiguration.class,
DispatcherServletAutoConfiguration.class, EmbeddedServletContainerAutoConfiguration.class,
JmxAutoConfiguration.class, MultipartAutoConfiguration.class, WebMvcAutoConfiguration.class,
JacksonAutoConfiguration.class, SpringApplicationAdminJmxAutoConfiguration.class,
MessageSourceAutoConfiguration.class, SendGridAutoConfiguration.class, FreeMarkerAutoConfiguration.class,
GroovyTemplateAutoConfiguration.class, DeviceDelegatingViewResolverAutoConfiguration.class,
SitePreferenceAutoConfiguration.class, MustacheAutoConfiguration.class,
PersistenceExceptionTranslationAutoConfiguration.class})
对于测试类我建议使用
@SpringBootTest(classes = TestApplication.class)
如果您在测试中不需要它,也可以排除Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
并尝试向我们提供更多详情