Gradle在默认环境下只提供src/test/java目任命于测试,对付以上3种范例的测试,我们必要将它们分隔以便于打点(也是职责疏散的浮现)。为此,可以通过Gradle提供的SourceSets对测试代码举办分类:
- sourceSets {
- componentTest {
- compileClasspath += sourceSets.main.output + sourceSets.test.output
- runtimeClasspath += sourceSets.main.output + sourceSets.test.output
- }
-
- apiTest {
- compileClasspath += sourceSets.main.output + sourceSets.test.output
- runtimeClasspath += sourceSets.main.output + sourceSets.test.output
- }
- }
到此,3种范例的测试可以别离编写在以下目次:
- 单位测试:src/test/java
- 组件测试:src/componentTest/java
- API测试:src/apiTest/java
必要留意的是,这里的API测试更多夸大的是对营业成果的测试,有些项目中也许还会存在左券测试和安详测试等,固然从技能上讲都是对API的会见,可是这些测试都是单独的存眷点,因此提议分隔看待。
值得一提的是,因为组件测试和API测试必要启动措施,也即必要筹备好当地数据库,我们回收了Gradle的docker-compose插件(可能jib插件),该插件会在运行测试之前自动运行Docker容器(好比MySQL):
- apply plugin: 'docker-compose'
-
-
- dockerCompose {
- useComposeFiles = ['docker/mysql/docker-compose.yml']
- }
-
- bootRun.dependsOn composeUp
- componentTest.dependsOn composeUp
- apiTest.dependsOn composeUp
更多的测试分类设置细节,好比JaCoCo测试包围率设置等,请参考本文的示例项目代码。对Gradle不认识的读者可以参考笔者的Gradle进修系列文章。
日记处理赏罚
在日记处理赏罚中,除了完成根基设置外,尚有2个必要思量的点:
1.在日记中插手哀求标识,便于链路追踪。在处理赏罚一个哀求的进程中偶然会输出多条日记,假如每条日记都共享同一的哀求ID,那么在日记追踪时会越发利便。此时,可以行使Logback原生提供的MDC(Mapped Diagnostic Context)成果,建设一个RequestIdMdcFilter:
- protected void doFilterInternal(HttpServletRequest request,
- HttpServletResponse response,
- FilterChain filterChain)
- throws ServletException, IOException {
- //request id in header may come from Gateway, eg. Nginx
- String headerRequestId = request.getHeader(HEADER_X_REQUEST_ID);
- MDC.put(REQUEST_ID, isNullOrEmpty(headerRequestId) ? newUuid() : headerRequestId);
- try {
- filterChain.doFilter(request, response);
- } finally {
- clearMdc();
- }
- }
2.齐集式日记打点,在多节点陈设的场景下,各个节点的日记是分手的,为此可以引入诸如ELK之类的器材将日记同一输出到ElasticSearch中。本文的示例项目行使了RedisAppender将日记输出到Logstash:
- <appender name="REDIS" class="com.cwbase.logback.RedisAppender">
- <tags>ecommerce-order-backend-${ACTIVE_PROFILE}</tags>
- <host>elk.yourdomain.com</host>
- <port>6379</port>
- <password>whatever</password>
- <key>ecommerce-ordder-log</key>
- <mdc>true</mdc>
- <type>redis</type>
- </appender>
虽然,同一日记的方案尚有许多,好比Splunk和Graylog等。
非常处理赏罚 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|