{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2021-01-20--002","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"bff1138d-e0bd-5801-baf4-d9ccf5817df5","html":"<h3>#. Jacoco ?</h3>\n<ul>\n<li>수행되는 테스트가 작성된 코드를 얼마나 커버하는지를 체크해주는 라이브러리이다.</li>\n<li>테스트코드를 돌리고 그 커버리지 결과를 눈으로 보기 좋도록 html이나 xml, csv 같은 리포트로 생성한다. </li>\n<li>테스트 결과가 내가 설정한 커버리지 기준을 만족하는지 확인하는 기능도 있다. </li>\n</ul>\n<h3>#. Jacoco 적용</h3>\n<h3>#. jacoco plugin 추가</h3>\n<ul>\n<li>plugins 블록에 id ‘jacoco’ 를 추가하면\n\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/4cf97c6c68806932e326f680b7612370/9128f/002-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 603px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 22.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABJ0AAASdAHeZh94AAAAz0lEQVQY012QUXLDIAxEfZkULIGNsQF7MGnSTu5/pK1gaJL24w1Iuyyg4XbPyDnAO4axCpPVf7DSqxg3YvKM2REMXWD4Amc05u6jSYGFIR0ryr4hK42TCJ+a8CU8FOMu6zlKT424+gXfR0LJETksKMGjMOMmnqt4Ao+NIaQFeV9xSuDBhFVurULqhpVrrZFIYyMFNxPi7hHl3DyN8Kyap+pRGLbosItYeqCRZ1OHO69at7GQfLdS9/89A5uPJtSgim1z+0U17TnHN2wPf9crP/ImmXGiUwLkAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/4cf97c6c68806932e326f680b7612370/9128f/002-01.png\"\n        srcset=\"/devHistoryBlog/static/4cf97c6c68806932e326f680b7612370/8ff5a/002-01.png 240w,\n/devHistoryBlog/static/4cf97c6c68806932e326f680b7612370/e85cb/002-01.png 480w,\n/devHistoryBlog/static/4cf97c6c68806932e326f680b7612370/9128f/002-01.png 603w\"\n        sizes=\"(max-width: 603px) 100vw, 603px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </li>\n</ul>\n<br>\n<ul>\n<li>jacocoTestReport 와 jacocoTestCoverageVerification task가 gradle verification 항목에 추가된다.</li>\n<li>주의 해야 할 점은 생성된 두 개의 task는 test 가 먼저 실행된 다음에 실행이 되어야 한다.\n\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/8b4fb606554b582708bb9ef257bbc454/2b41d/002-02.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 338px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 103.33333333333331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAABJ0AAASdAHeZh94AAACY0lEQVQ4y51UyVLcMBD1bzHM4t2WtViyPQuQsEyKJVQlOeTAgalUTvwOU8kHvnTLDJBKASaH55Zl+el195OCw5t7fNhscfDjN9rv91jd/IL+tkX1dQv5Hwjyg1uY9U/IqzvML++gP26QHWyQrnoky9vH8RAEe/sj5EUOIQTM2SVEbeEah9oaWGchZYn98Wgwgv1phKJSKKSBOlojVzWkrhFnBcazGJMw8XEoiDBEVlZEqKGPL5Bri0ppIswxmswIIS2MPHjz3fgleMJSKghS5tbXKE0DZWp616ib1o+ZmNf1pOHbhF5hpWGOz1GQwkLIhzmFitJP8gKzOH2T7ImwED3h2WeqoUXpiaim1CBtGxjriLT0SgcRFpWEICXu9IoUclOMV7M3phqOpz6+O+Wc0ixXx8hIKddtGiX/LB6cMqcoFPnu0zV12UETYZRmpGw6mOgvQq+OfFifXCCjmJNibgY3Z1e3oaQPhBURPvlQqr4hzwkHp8w/MKFxLZrzL0iFpiPXQBrqMM2xR9+lkB87447iHKZb+fTZSoxJGA+uH3MEz3dmi1TG+XNdUdqCysBHrz+Cr2PHEzzfgT+YdglpWyJTvq7e3LXzR5HLwMexbjpvdttybLz54zR/UtijV6jcnEzufEO4+9zxkrxZCEVj6S0W0c9hkiFKcn8r8TuXxhNOIrqiGDHXKoRdrKBpZ2lIneXGOLiug5sv0Mw7pCXdjzPqfEhZheEjJlHkeQLRkYJWgGPRlDg8P8VyfYTFyeJxrofwcbf2JQSxyJCqEklF8kUKQTe1sFQvpx/msj5WWQ/xOv4Af80HA4bIjgkAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 02\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/8b4fb606554b582708bb9ef257bbc454/2b41d/002-02.png\"\n        srcset=\"/devHistoryBlog/static/8b4fb606554b582708bb9ef257bbc454/8ff5a/002-02.png 240w,\n/devHistoryBlog/static/8b4fb606554b582708bb9ef257bbc454/2b41d/002-02.png 338w\"\n        sizes=\"(max-width: 338px) 100vw, 338px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </li>\n</ul>\n<h3>#. jacoco version</h3>\n<ul>\n<li>toolVersion 을 다음과 같이 명시한다</li>\n<li>버전 정보는 <a href=\"https://www.eclemma.org/jacoco/\">여기</a> 에서 확인한다.</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/de2aee50a53307fb7daaedd85574e913/0e2fe/002-03.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 285px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 27.083333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABJ0AAASdAHeZh94AAAAyklEQVQY022Qaw6CMBCEuYtR+4BSCrUYqvEZiJjo/S8zbmtRSfzxZdLNdnZ2s8ZquNbAuQp2o1E3KpIX6w+FYqQsaiTU1Ryp3r2Z32/RDxcMwxmX6wFdZ8ncgIsFSi2gSg6Zr5J5UjLVNECFIUl1zt6GQi4xET4G7bzDeO8jt7GPw44nj8dzhPcbNI62EhwnJrHjAkcm4CSHoJRZu21iku9qa3pLWFvC1AUqk0c1taKa/vTGlJSqSkznyVxbzwwn05D2H7+DZ3dMhi9fSZt5aPE/VwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 03\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/de2aee50a53307fb7daaedd85574e913/0e2fe/002-03.png\"\n        srcset=\"/devHistoryBlog/static/de2aee50a53307fb7daaedd85574e913/8ff5a/002-03.png 240w,\n/devHistoryBlog/static/de2aee50a53307fb7daaedd85574e913/0e2fe/002-03.png 285w\"\n        sizes=\"(max-width: 285px) 100vw, 285px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h3>#. jacocoTestReports 설정</h3>\n<ul>\n<li>jacocoReport task는 html, csv, xml 형태로 커버리지 측정 결과를 알려주는 역할을 한다.</li>\n<li>report 포맷 및 경로를 지정한다.</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/2f5254803b51e83928f54503290c8812/27524/002-04.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 646px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 33.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABJ0AAASdAHeZh94AAABBUlEQVQoz3WQa26DMBCEuUvVxE+M7WAblxAqJZFQ73+e6dqEhKrtj09jwWp2dpqYHM7TgGW5kiY4r6FbtqKPFdUS+jfb3P7dmE4gRIf5c8SQe+KEECwCLfKaw6hiWMzZ36aV9X81LB+lOoDxN1incb3NuBHL1x2T6zAc2b8JX6asLi1zzfM8oqQtFXyMsdJrgZ7TwmeSVwVyx7awGDdbBwXrFKZLxkhmpc9pzhjGgAt1bFOEGBJEzjCelnKOMxeV+pYKzqr15M7KmrDomi5UHUlj8kiUWgcP2XuIcEJnNBJnyGSUxEo0CtpwNKW/lh5bUiHffyAVKc0oUv1A6QMEnblHPq78BkSJ2MyMSdHsAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 04\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/2f5254803b51e83928f54503290c8812/27524/002-04.png\"\n        srcset=\"/devHistoryBlog/static/2f5254803b51e83928f54503290c8812/8ff5a/002-04.png 240w,\n/devHistoryBlog/static/2f5254803b51e83928f54503290c8812/e85cb/002-04.png 480w,\n/devHistoryBlog/static/2f5254803b51e83928f54503290c8812/27524/002-04.png 646w\"\n        sizes=\"(max-width: 646px) 100vw, 646px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h3>#. jacocoTestCoverageVerification</h3>\n<ul>\n<li>커버리지 검증 수준을 정의.</li>\n<li>이 부분에서 jacoco의 report 검사하여 설정한 최소 수준을 달성하지 못하면 task는 실패를 한다.</li>\n<li>여러 수준의 정의를 violationRules 에서 다수의 rule 에 정의하여 사용할 수 있다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">jacocoTestCoverageVerification {\n  violationRules {\n    rule {\n      //해당 rule의 활성화 여부를 boolean으로 나타낸다\n      //default는 true\n      enabled = true\n        \n      // 측정의 큰 단위\n      element = &#39;CLASS&#39;\n\n      // rule 적용 대상을 package 수준으로 정의\n      // 아무런 설정을 하지 않는다면 전체 적용\n      //includes = []\n        \n      // rule의 상세 설정을 나타내는 block\n      limit {\n\n        // 커버리지 측정의 최소 단위\n        // 이 때 측정은 java byte code가 실행된 것을 기준으로 counting 된다\n        // counter 종류 \n        //  - CLASS : 클래스 내부 메소드가 한번이라도 실행된다면 실행된 것으로 간주\n        //  - METHOD : 클래스와 마찬가지로 METHOD가 한번이라도 실행되면 실행된 것으로 간주\n        //  - LINE : 한 라인이라도 실행되었다면 측정, 소스 코드 포맷에 영향을 받는 측정방식\n        //  - BRANCH : if, switch 구문에 대한 커버리지 측정\n        //  - INSTRUCTION : jacoco의 가장 작은 측정 방식(바이트 코드), LINE과 다르게 소스 코드 포맷에 영향을 받지 않는다.\n        counter = &#39;LINE&#39;\n\n        // 측정한 counter의 정보를 어떠한 방식으로 보여줄지 정한다\n        // value 종료\n        //  - TOTALCOUNT: 전체 개수\n        //  - MISSEDCOUNT: 커버되지 않은 개수\n        //  - COVEREDCOUNT: 커버된 개수\n        //  - MISSEDRATIO: 커버되지 않은 비율. 0부터 1 사이의 숫자로, 1이 100%\n        //  - COVEREDRATIO (default): 커버된 비율. 0부터 1 사이의 숫자로, 1이 100%\n        value = &#39;COVEREDRATIO&#39;\n\n        // count값을 value에 맞게 표현했을때 최소 값을 나타낸다\n        // 이 값으로 jacoco coverage verification의 성공여부를 판단 (0.00~1.00)\n        minimum = 0.60\n      }\n    \n      // verify 에서 제외할 클래스를 지정 (패키지 레벨 경로)\n      excludes = []\n  }\n    \n  rule {\n      ...\n  }\n}\n}</code></pre></div>\n<h3>#. finalizedBy</h3>\n<ul>\n<li>test task를 먼저 실행한 다음 jacoco task 가 실행되어야 한다.</li>\n<li>test -> jacocoTestReport -> jacocoTestCoverageVerification</li>\n<li>위 순서대로 task가 실행되도록 finalizedBy 를 적용한다.</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/329f0148d0e1ca1336cdce6af5b6cebe/5f4af/002-05.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 665px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 55.41666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABYElEQVQoz5WSWXKDMBBEuYwBrYC1IMCATSjHSe5/ns5IxHacr/DxaiSBuqZbk7XhCN82aI5yw6iE1CWEKhJyB1ndCCxvM263BZ9fV0ydw2INWsHQMQYnSqg9goo64eIAIfOEFBtalagIvbdDYzWsq2FsRbVCVXOoqkwf99pNgs438JTj+TJiXWc4XyN2/Z/L8b+/ZNFmtKwrlg6mqaNMJ7x/rJiDRSi3H6V+rUr94S74VC9ShqGzmOcB6/WC0R3R5ZRpzFbFekgIWnPqkMc7P7w8ym8bjvIMnaFRIrHewNJI9b1FQ+LcG8KiriQ8ZwiEF1t1WlD2DNmWBUPd8CTYDw7n80Bd9lguJxJzFENA1XrwLoD3HayWGGmkZsYxRDiHbWSKI4vZtcHgNLY40cWG8nBlDssK2JI6puqpxn3L4j7fLOviQbJ9t5zGhJSjcCKu4/zpV5TazmNNrh48HyV2+A2pF1KQcKpR3wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 05\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/329f0148d0e1ca1336cdce6af5b6cebe/5f4af/002-05.png\"\n        srcset=\"/devHistoryBlog/static/329f0148d0e1ca1336cdce6af5b6cebe/8ff5a/002-05.png 240w,\n/devHistoryBlog/static/329f0148d0e1ca1336cdce6af5b6cebe/e85cb/002-05.png 480w,\n/devHistoryBlog/static/329f0148d0e1ca1336cdce6af5b6cebe/5f4af/002-05.png 665w\"\n        sizes=\"(max-width: 665px) 100vw, 665px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h3>#. 테스트 실행 및 결과 확인</h3>\n<ul>\n<li>테스트 실행</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$ ./gredlew test</code></pre></div>\n<br>\n<ul>\n<li>결과</li>\n<li>coverage 66% 로 0.60 를 넘어 verification pass 했다.</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/f470a/002-06.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 45.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABJ0AAASdAHeZh94AAABg0lEQVQoz2WSC2+jMBCE8/9/YUiAViQNuUIDBr+9MLe7qGpPZ2nlh+TPMzs+PR53PD5uGIY/IMpcBaUcRZlAhZBzRkpJ5//r3/NTXb+jaTp0XY95trDWwXuPZV3wHJ8YXiOmadKa51nr9/57rXsz49TUAZdrQVVFnM8B4xhZVYGLDjfToTc9nw2sMMKuK5ZlwcqztRbGGDjndO2c1fWpbSIDCdUl4X4vfHHDvm/Ytg0ydtoxvQbQXhBjVPUxBLUq+1J+2lHE8lsbca0LrteEps4IgRRIRAwlJL4o9mXEGBQYGJgYFoJXmIBlllKFFSs8Vwltm7GY38ANme2v3J+SGcBAgQXvtQVBlWZ96ABGAQZWlzmUhK9RkjpAhdNWIIOXz0+scw/LfQ0+aK9EnfdOQapYbbPC7s2ibTzeW4tp9GoT2PT7HGDC/PxAIr4kYXEAnoHOH2GIXSn9NoflpJYvl4xHX2BmglkIJUra/CpDza0D1RXi9IJlu5KuJC5pfwelreD6C2xntQ/YqcT3AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 06\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/d9199/002-06.png\"\n        srcset=\"/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/8ff5a/002-06.png 240w,\n/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/e85cb/002-06.png 480w,\n/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/d9199/002-06.png 960w,\n/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/07a9c/002-06.png 1440w,\n/devHistoryBlog/static/7d1a450cd93f90f06aab59b91b1456b5/f470a/002-06.png 1443w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n     </p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/9de76/002-07.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAABJ0AAASdAHeZh94AAAARElEQVQI1y3JywqAIBQA0f7/N01XBYK3+9BsEmpxYGC2sldymeQ8SGlwnDdzPvTeUVXMjNYa7r4YstpM17sQESLif58XJbBNPS/DvG0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"002 07\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/d9199/002-07.png\"\n        srcset=\"/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/8ff5a/002-07.png 240w,\n/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/e85cb/002-07.png 480w,\n/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/d9199/002-07.png 960w,\n/devHistoryBlog/static/4982ec242d73aa4ce13f1922e92d5ae4/9de76/002-07.png 1423w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n     </p>\n<br>","fields":{"tagSlugs":["/tags/jacoco/"],"slug":"/works/posts/2021-01-20--002"},"frontmatter":{"title":"Jacoco","tags":["jacoco"],"date":"2021-01-20","description":""}}},"pageContext":{"slug":"/works/posts/2021-01-20--002"}},"staticQueryHashes":[]}