{"id":164,"date":"2023-01-23T00:00:00","date_gmt":"2023-01-22T15:00:00","guid":{"rendered":"https:\/\/hirabay.net\/?p=164"},"modified":"2023-01-31T11:02:14","modified_gmt":"2023-01-31T02:02:14","slug":"%e3%80%90java%ef%bc%86kotlin%e3%80%91junit5%e3%83%81%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88","status":"publish","type":"post","link":"https:\/\/hirabay.net\/?p=164","title":{"rendered":"\u3010Java\uff06Kotlin\u3011\u5b9f\u52d9\u3067\u4f7f\u3048\u308bJUnit5\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u30c6\u30b9\u30c8\u3092\u66f8\u3044\u3066\u3044\u308b\u3068\u300c\u3042\u308c\u3001\u3069\u3046\u5b9f\u88c5\u3059\u308c\u3070\u3044\u3044\u3093\u3060\u3063\u3051\uff1f\u300d\u3068\u624b\u304c\u6b62\u307e\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u304b\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u8a18\u4e8b\u3067\u306f\u3001\u305d\u3093\u306a\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u307f\u306a\u3055\u307e\u304c\u300c\u3053\u3053\u3055\u3048\u898b\u308c\u3070\u3084\u308a\u305f\u3044\u3053\u3068\u3092\u5b9f\u73fe\u3067\u304d\u308b\u300d\u3092\u76ee\u6307\u3057\u3066\u60c5\u5831\u3092\u307e\u3068\u3081\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u696d\u52d9\u3067\u30c6\u30b9\u30c8\u3092\u66f8\u304d\u306a\u304c\u3089\u300c\u5b9f\u88c5\u30b3\u30b9\u30c8\u300d\u3084\u300c\u53ef\u8aad\u6027\u300d\u3092\u8ffd\u3044\u6c42\u3081\u305f\u500b\u4eba\u7684\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306a\u30b3\u30fc\u30c9\u306a\u306e\u3067\u305c\u3072\u4f7f\u3063\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01<\/p>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>110<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>115<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>122<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">\n  <li class=\"first\">\n    <a href=\"#i-0\">\u524d\u63d0<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-1\">\u30c6\u30b9\u30c8\u5bfe\u8c61\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-2\">\u57fa\u672c\u5f62<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-3\">@BeforeEach \/ @AfterEach<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-4\">@BeforeAll \/ @AfterAll<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-5\">@Nested<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-6\">@ParameterizedTest<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-7\">@MockBean \/ @MockkBean<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-8\">\u30b3\u30eb\u30fc\u30c1\u30f3\uff08\u203bKotlin\u306e\u307f\uff09<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-9\">static\u30e1\u30bd\u30c3\u30c9<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-10\">\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf<\/a>\n  <\/li>\n  <li class=\"last\">\n    <a href=\"#i-11\">\u3042\u3068\u304c\u304d<\/a>\n  <\/li>\n<\/ul>\n\n      \n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u524d\u63d0<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SpringBoot\u5229\u7528<\/li>\n\n\n\n<li>\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306fGradle<br>\u3000\u203bMaven\u3067\u3082\u30b3\u30fc\u30c9\u90e8\u5206\u306f\u53c2\u8003\u306b\u306a\u308c\u3070\u3068\u2026\uff01<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">\u30c6\u30b9\u30c8\u5bfe\u8c61\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u540d\u524d\u3092\u53d7\u3051\u53d6\u3063\u3066\u3042\u3044\u3055\u3064\u3092\u3059\u308b\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f56f613f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>@RequiredArgsConstructor\n@Component\npublic class ParentComponent {\n    private final ChildComponent childComponent;\n    \n    public String greeting(String name) {\n        return childComponent.greeting(name);\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>@Component\npublic class ChildComponent {\n    public String greeting(String name) {\n        return \"Hello, \" + name + \".\";\n    }\n}<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>@Component\nclass ParentComponent(private val childComponent: ChildComponent) {\n    fun greeting(name: String): String {\n        return childComponent.greeting(name)\n    }\n\n    suspend fun greetingSuspend(name: String): String {\n        return childComponent.greetingSuspend(name)\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>@Component\nclass ChildComponent {\n    fun greeting(name: String): String {\n        return \"Hello, ${name}.\"\n    }\n\n    suspend fun greetingSuspend(name: String): String {\n        return \"Hello, ${name}.\"\n    }\n}<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-2\">\u57fa\u672c\u5f62<\/h2>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>dependencies {\n\t...\n\ttestImplementation 'org.springframework.boot:spring-boot-starter-test'\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>import static org.assertj.core.api.Assertions.assertThat;\nimport static org.mockito.ArgumentMatchers.any;\nimport static org.mockito.Mockito.verify;\nimport static org.mockito.Mockito.when;\n\n\/\/ @InjectMocks\u3084@Mock\u3092\u52d5\u4f5c\u3055\u305b\u308b\u305f\u3081\u306b\u5fc5\u8981\n@ExtendWith(MockitoExtension.class)\nclass ParentComponentTest {\n    \/\/ \u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u30af\u30e9\u30b9\u3002\u300c@InjectMocks\u300d\u3092\u4ed8\u3051\u308b\u3068\u81ea\u52d5\u3067\u4f9d\u5b58\u30af\u30e9\u30b9\u3092\u6ce8\u5165\u3057\u3066\u304f\u308c\u308b\n    @InjectMocks\n    ParentComponent parentComponent;\n\n    \/\/ \u30c6\u30b9\u30c8\u5bfe\u8c61\u30af\u30e9\u30b9\u306e\u4f9d\u5b58\u30af\u30e9\u30b9\u3002\u300c@Mock\u300d\u3092\u4ed8\u3051\u308b\u3068Mock\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u3066\u304f\u308c\u308b\n    @Mock\n    ChildComponent childComponent;\n\n    @Test\n    void test() {\n        \/\/ \u4f9d\u5b58Mock\u306e\u52d5\u4f5c\u3092\u5b9a\u7fa9\n        when(childComponent.greeting(any())).thenReturn(\"Hello\");\n\n        var actual = parentComponent.greeting(\"hirabay\");\n        var expected = \"Hello\";\n\n        \/\/ \u623b\u308a\u5024\u3092\u691c\u8a3c\n        assertThat(actual).isEqualTo(expected);\n        \/\/ \u4f9d\u5b58\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u547c\u3073\u51fa\u3055\u308c\u65b9\u3092\u691c\u8a3c\n        verify(childComponent).greeting(any());\n        \/\/ \u4ee5\u4e0b\u30b3\u30fc\u30c9\u3068\u540c\u3058\u610f\u5473\u3002times\u3067\u547c\u3073\u51fa\u3057\u56de\u6570\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n        \/\/ verify(childComponent, times(1)).greeting(any());\n    }\n}<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle.kts\" data-lang=\"Groovy\"><code>dependencies {\n  ...\n  testImplementation(\"io.mockk:mockk:1.13.3\")\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>import io.mockk.every\nimport io.mockk.impl.annotations.InjectMockKs\nimport io.mockk.impl.annotations.MockK\nimport io.mockk.junit5.MockKExtension\nimport io.mockk.verify\nimport org.assertj.core.api.Assertions.assertThat\nimport org.junit.jupiter.api.Test\nimport org.junit.jupiter.api.extension.ExtendWith\n\n\/\/ @InjectMockKs\u3084@MockK\u3092\u52d5\u4f5c\u3055\u305b\u308b\u305f\u3081\u306b\u5fc5\u8981\n@ExtendWith(MockKExtension::class)\ninternal class ParentComponentTest {\n    \/\/ \u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u30af\u30e9\u30b9\u3002\u300c@InjectMockKs\u300d\u3092\u4ed8\u3051\u308b\u3068\u81ea\u52d5\u3067\u4f9d\u5b58\u30af\u30e9\u30b9\u3092\u6ce8\u5165\u3057\u3066\u304f\u308c\u308b\n    @InjectMockKs\n    lateinit var parentComponent: ParentComponent\n\n    \/\/ \u30c6\u30b9\u30c8\u5bfe\u8c61\u30af\u30e9\u30b9\u306e\u4f9d\u5b58\u30af\u30e9\u30b9\u3002\u300c@MockK\u300d\u3092\u4ed8\u3051\u308b\u3068Mock\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u3066\u304f\u308c\u308b\n    @MockK\n    lateinit var childComponent: ChildComponent\n\n    @Test\n    fun test() {\n        \/\/ \u4f9d\u5b58Mock\u306e\u52d5\u4f5c\u3092\u5b9a\u7fa9\n        every {\n            childComponent.greeting(any())\n        } returns \"Dummy\"\n\n        val actual = parentComponent.greeting(\"hirabay\")\n        val expected = \"Dummy\"\n\n        assertThat(actual).isEqualTo(expected)\n        \/\/ \u547c\u51fa\u3055\u308c\u65b9\u306e\u691c\u8a3c\n        verify {\n            childComponent.greeting(any())\n        }\n        \/\/ \u547c\u51fa\u3055\u308c\u65b9\u306e\u691c\u8a3c\uff08exactly\u3067\u547c\u3073\u51fa\u3057\u56de\u6570\u307e\u3067\u691c\u8a3c\u3067\u304d\u308b\uff09\n        verify(exactly = 1) {\n            childComponent.greeting(any())\n        }\n    }\n}<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">@BeforeEach \/ @AfterEach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5404\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3054\u3068\u306b\u5b9f\u884c\u3057\u305f\u3044\u51e6\u7406\u304c\u3042\u308b\u5834\u5408\u306b\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n<p><\/p><div class=\"memo \"><div class=\"memo_ttl dfont\"> \u30e1\u30e2<\/div>\u5171\u901a\u7684\u306aMock\u306e\u5b9a\u7fa9\u306e\u5b9f\u88c5\u306b\u4fbf\u5229\u3067\u3059\uff01<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>    @BeforeEach\n    void beforeEach() {\n        System.out.println(\"\u5404\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u5b9f\u884c\u524d\u306e\u51e6\u7406\");\n    }\n\n    @AfterEach\n    void afterEach() {\n        System.out.println(\"\u5404\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u5b9f\u884c\u5f8c\u306e\u51e6\u7406\");\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>    @BeforeEach\n    fun beforeEach() {\n        \/\/ \u5404\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u5b9f\u884c\u524d\u306e\u51e6\u7406\n    }\n\n    @AfterEach\n    fun afterEach() {\n        \/\/ \u5404\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u5b9f\u884c\u5f8c\u306e\u51e6\u7406\n    }<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">@BeforeAll \/ @AfterAll<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u5168\u4f53\u306e\u524d\u5f8c\u3067\u5b9f\u884c\u3057\u305f\u3044\u51e6\u7406\u304c\u3042\u308b\u5834\u5408\u306b\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n<p><\/p><div class=\"memo \"><div class=\"memo_ttl dfont\"> \u30e1\u30e2<\/div>Java\u3067\u3044\u3046static\u30e1\u30bd\u30c3\u30c9\u3067\u95a2\u6570\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>    @BeforeAll\n    static void beforeAll() {\n        System.out.println(\"\u30c6\u30b9\u30c8\u5b9f\u884c\u524d\u306e\u51e6\u7406\");\n    }\n    \n    @AfterAll\n    static void afterAll() {\n        System.out.println(\"\u30c6\u30b9\u30c8\u5b9f\u884c\u5f8c\u306e\u51e6\u7406\");\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>    companion object {\n        @BeforeAll\n        @JvmStatic\n        fun beforeAll() {\n            println(\"\u30c6\u30b9\u30c8\u5b9f\u884c\u524d\u306e\u51e6\u7406\")\n        }\n\n        @AfterAll\n        @JvmStatic\n        fun afterAll() {\n            println(\"\u30c6\u30b9\u30c8\u5b9f\u884c\u5f8c\u306e\u51e6\u7406\")\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-5\">@Nested<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u5185\u3067\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u30b0\u30eb\u30fc\u30d4\u30f3\u30b0\u3057\u305f\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u50d5\u306e\u5834\u5408\u306f\u3001\u89aa\u30af\u30e9\u30b9\u3092\u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u30af\u30e9\u30b9\u3054\u3068\u306b\u3001<br>@Nested\u306a\u30af\u30e9\u30b9\u3092\u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u30e1\u30bd\u30c3\u30c9\u3054\u3068\u306b\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002<\/p>\n\n\n<p><\/p><div class=\"memo \"><div class=\"memo_ttl dfont\"> \u30e1\u30e2<\/div>\u89aa\u30af\u30e9\u30b9\u306b\u5b9a\u7fa9\u3057\u305f\u3082\u306e\u306fNested\u30af\u30e9\u30b9\u306b\u5f15\u304d\u7d99\u304c\u308c\u307e\u3059\uff01<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>    @Nested\n    class GreetingTest {  \/\/ \u30e1\u30bd\u30c3\u30c9\u540d\uff0b\u300cTest\u300d\n        @Test\n        void test() {\n            \/\/ \u30c6\u30b9\u30c8\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>    @Nested\n    inner class GreetingTest {  \/\/ \u30e1\u30bd\u30c3\u30c9\u540d\uff0b\u300cTest\u300d\n        @Test\n        fun test() {\n            \/\/ \u30c6\u30b9\u30c8\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-6\">@ParameterizedTest<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30c6\u30b9\u30c8\u95a2\u6570\u306b\u5f15\u6570\u3092\u6e21\u3059\u3053\u3068\u3067\u3001\uff11\u30e1\u30bd\u30c3\u30c9\u3067\u8907\u6570\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u5b9f\u884c\u3067\u304d\u3066\u3057\u307e\u3046\u512a\u308c\u3082\u306e\u3067\u3059\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u308a\u3042\u3048\u305a@ParameterizedTest\u3067\u30c6\u30b9\u30c8\u3092\u307e\u3068\u3081\u3089\u308c\u306a\u3044\u304b\u691c\u8a0e\u3057\u3066\u3082\u3044\u3044\u30ec\u30d9\u30eb\u306b\u4fbf\u5229\u3067\u3059\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u6307\u5b9a\u65b9\u6cd5\u306b\u300c@ValueSource\u300d\u300c@CsvSource\u300d\u300c@MethodSource\u300d\u7b49\u304c\u3042\u308a\u3001\u5185\u5bb9\u304cFat\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u305f\u3081\u5225\u8a18\u4e8b\u3067\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u306e\u3067\u30ea\u30f3\u30af\u5148\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\uff01<\/p>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-\u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0 wp-block-embed-\u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"I0KrDvtQ6k\"><a href=\"https:\/\/hirabay.net\/?p=52\">\u300e@ParameterizedTest\u300f\uff11\u30e1\u30bd\u30c3\u30c9\u3067\u8907\u6570\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u5b9f\u88c5\uff01<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u300e@ParameterizedTest\u300f\uff11\u30e1\u30bd\u30c3\u30c9\u3067\u8907\u6570\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u5b9f\u88c5\uff01&#8221; &#8212; \u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0\" src=\"https:\/\/hirabay.net\/?p=52&#038;embed=true#?secret=vfCNOPDAv6#?secret=I0KrDvtQ6k\" data-secret=\"I0KrDvtQ6k\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-\u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0 wp-block-embed-\u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"0mmYSX87r3\"><a href=\"https:\/\/hirabay.net\/?p=180\">\u3010Kotlin\u3011ParameterizedTest\u3067JUnit\u306e\u53ef\u8aad\u6027\u5411\u4e0a<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u3010Kotlin\u3011ParameterizedTest\u3067JUnit\u306e\u53ef\u8aad\u6027\u5411\u4e0a&#8221; &#8212; \u3072\u3089\u3079\u30fc\u30d6\u30ed\u30b0\" src=\"https:\/\/hirabay.net\/?p=180&#038;embed=true#?secret=jDylKA2f5T#?secret=0mmYSX87r3\" data-secret=\"0mmYSX87r3\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">@MockBean \/ @MockkBean<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SpringBootTest\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092Mock\u5316\u3059\u308b\u3060\u3051\u3067\u306f\u306a\u304f\u3001Bean\u767b\u9332\u3082\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u305a@Mock \/ @MockK\u3067\u306f\u3046\u307e\u304f\u52d5\u304d\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee3\u308f\u308a\u306b@MockBean\u3084@MockkBean\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<br>\u4f7f\u3046\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u5909\u308f\u308b\u3060\u3051\u3067\u4f7f\u3044\u65b9\u306f\u540c\u3058\u3067\u3059\uff01<\/p>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>@SpringBootTest(classes = CheatsheetApplication.class)\npublic class SpringBootTestSample {\n    @MockBean\n    private ChildComponent childComponent;\n\n    @Test\n    void test() {\n        when(childComponent.greeting(any())).thenReturn(\"dummy\");\n\n        \/\/ \u30c6\u30b9\u30c8\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-file=\"build.gradle.kts\" data-lang=\"Kotlin\"><code>dependencies {\n    ...\n    testImplementation(\"com.ninja-squad:springmockk:3.1.2\")\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>@SpringBootTest\ninternal class SpringBootTestSample {\n    @MockkBean\n    lateinit var childComponent: ChildComponent\n\n    @Test\n    fun test() {\n        every {\n            childComponent.greeting(any())\n        } returns \"dummy\"\n\n        \/\/ \u30c6\u30b9\u30c8\n    }\n}<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">\u30b3\u30eb\u30fc\u30c1\u30f3\uff08\u203bKotlin\u306e\u307f\uff09<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin\u306e\u30b3\u30eb\u30fc\u30c1\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001suspend\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u3068\u601d\u3044\u307e\u3059\u3002<br>\u305d\u306e\u5834\u5408\u306f<code>every<\/code>, <code>verify<\/code>\u306e\u4ee3\u308f\u308a\u306b<code>coEvery<\/code> , <code>coVerify<\/code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n<p><\/p><div class=\"memo alert\"><div class=\"memo_ttl dfont\"> \u6ce8\u610f<\/div>suspend\u95a2\u6570\u306e\u30c6\u30b9\u30c8\u5b9f\u88c5\u6642\u306b\u3001\u30c6\u30b9\u30c8\u30e1\u30bd\u30c3\u30c9\u3092suspend\u95a2\u6570\u3067\u5b9a\u7fa9\u3057\u306a\u3044\u3053\u3068\uff01\uff01\uff01<br>\n\u30c6\u30b9\u30c8\u304c\u30b9\u30ad\u30c3\u30d7\u6271\u3044\u306b\u306a\u308b\u306e\u3067\u6700\u60aa\u52d5\u304b\u306a\u304f\u3066\u3082\u6c17\u3065\u3051\u306a\u3044\u3067\u3059\u3002<\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>@Test\nfun test() {\n    coEvery {\n        childComponent.greetingSuspend(any())\n    } returns \"dummy\"\n\n    val actual = runBlocking {\n        parentComponent.greetingSuspend(\"hirabay\")\n    }\n    val expected = \"dummy\"\n\n    assertThat(actual).isEqualTo(expected)\n\n    coVerify {\n        childComponent.greetingSuspend(any())\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">static\u30e1\u30bd\u30c3\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">static\u30e1\u30bd\u30c3\u30c9\u306eMock\u5316\u306b\u306f<code>mockStatic<\/code>\/ <code>mockkStatic<\/code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>dependencies {\n  \/\/ mockito-inline\u3092\u4f9d\u5b58\u306b\u8ffd\u52a0\u3059\u308b\n  testImplementation 'org.mockito:mockito-inline'\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>    @Test\n    void test() {\n        var mockedValue = LocalDate.of(2022, 3, 1);\n\n        \/\/ Mock\u5316\u306e\u6e96\u5099\u3002close()\u306e\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067 try with resource\u6587\u3067\n        try (MockedStatic&lt;LocalDate&gt; mockedLocalDate = mockStatic(LocalDate.class)) {\n            \/\/ static\u30e1\u30bd\u30c3\u30c9\u306eMock\u5316\n            mockedLocalDate.when(() -&gt; LocalDate.now()).thenReturn(mockedValue);\n\n            \/\/ static\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057\n            var actual = LocalDate.now();\n\n            \/\/ \u623b\u308a\u5024\u306e\u691c\u8a3c\n            assertThat(actual.toString()).isEqualTo(\"2022-03-01\");\n\n            \/\/ static\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3055\u308c\u65b9\u306e\u691c\u8a3c\n            mockedLocalDate.verify(() -&gt; LocalDate.now());\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>    @Test\n    fun staticMethod() {\n        val mockedValue = LocalDate.of(2020, 8, 11)\n\n        \/\/ static\u30e1\u30bd\u30c3\u30c9\u3092Mock\u5316\n        mockkStatic(LocalDate::class)\n        \n        every {\n            LocalDate.now()\n        } returns mockedValue\n\n        val actual = LocalDate.now()\n        assertThat(actual).isEqualTo(mockedValue)\n\n        \/\/ Mock\u5316\u3092\u89e3\u9664\n        unmockkStatic(LocalDate::class)\n    }<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-10\">\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u751f\u6210\u3055\u308c\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092Mock\u5316\u3059\u308b\u306b\u306f<\/p>\n\n\n\n<div class=\"wp-block-sgb-tab\"><div class=\"post-tab cf\"><label class=\"tab1 tab-active\">Java<\/label><label class=\"tab2\">Kotlin<\/label><\/div>\n<div class=\"wp-block-sgb-tab-item post-tab__content tab1 tab-active\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>dependencies {\n  \/\/ mockito-inline\u3092\u4f9d\u5b58\u306b\u8ffd\u52a0\u3059\u308b\n  testImplementation 'org.mockito:mockito-inline'\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>    @Test\n    void constructor() {\n        \/\/ Mock\u5316\u306e\u6e96\u5099\u3002close()\u306e\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067 try with resource\u6587\u3067\n        try (MockedConstruction&lt;Random&gt; mockedRandom = mockConstruction(Random.class)) {\n            \/\/ Mock\u5316\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u751f\u6210\u3055\u308c\u308b\n            var random = new Random();\n\n            \/\/ Mock\u52d5\u4f5c\u3092\u6307\u5b9a\n            \/\/ \u6ce8\u610f\uff1a\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u5f8c\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\uff01\n            mockedRandom.constructed().forEach(constructed -&gt; {\n                when(constructed.nextInt()).thenReturn(1);\n            });\n\n            assertThat(random.nextInt()).isEqualTo(1);\n            assertThat(random.nextInt()).isEqualTo(1);\n            assertThat(random.nextInt()).isEqualTo(1);\n\n            \/\/ Mock\u547c\u3073\u51fa\u3055\u308c\u65b9\u3092\u691c\u8a3c\n            mockedRandom.constructed().forEach(constructed -&gt; {\n                verify(constructed, times(3)).nextInt();\n            });\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-sgb-tab-item post-tab__content tab2\">\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-kotlin\" data-lang=\"Kotlin\"><code>    @Test\n    fun constructor() {\n        mockkConstructor(ChildComponent::class)\n        \/\/ Mock\u52d5\u4f5c\u3092\u6307\u5b9a\n        \/\/ \u6ce8\u610f\uff1a\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u547c\u3073\u51fa\u3057\u524d\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\uff01\n        every {\n            anyConstructed&lt;ChildComponent&gt;().greeting(any())\n        } returns \"dummy\"\n\n        val childComponent = ChildComponent()\n\n        val actual = childComponent.greeting(\"hirabay\")\n\n        assertThat(actual).isEqualTo(\"dummy\")\n\n        verify {\n            anyConstructed&lt;ChildComponent&gt;().greeting(any())\n        }\n    }<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u3042\u3068\u304c\u304d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JUnit5\u306e\u30c6\u30b9\u30c8\u306e\u66f8\u304d\u65b9\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u7d39\u4ecb\u3057\u305f\u3088\u3046\u306a\u5b9f\u88c5\u304c\u30b9\u30e0\u30fc\u30ba\u306b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\u3001\u6b21\u306f\u30c6\u30b9\u30c8\u306e\u901f\u3055\u306b\u3082\u6c17\u3092\u914d\u3063\u3066\u307f\u308b\u3068\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff01<br>\u7279\u306bSpringBoot\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30b9\u30c8\u3092\u66f8\u3044\u3066\u3044\u308b\u3068\u30c6\u30b9\u30c8\u304c\u9045\u304f\u306a\u308a\u304c\u3061\u306a\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3082\u305c\u3072\u3054\u89a7\u304f\u3060\u3055\u3044\uff01<\/p>\n\n\n<a class=\"linkto table\" href=\"https:\/\/hirabay.net\/?p=160\"><span class=\"tbcell tbimg\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"160\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/4323d0c62f94f0bcc0e24d9cc7fabfc0-160x160.png\" class=\"attachment-thumb-160 size-thumb-160 wp-post-image\" alt=\"\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/4323d0c62f94f0bcc0e24d9cc7fabfc0-160x160.png 160w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/4323d0c62f94f0bcc0e24d9cc7fabfc0-150x150.png 150w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\"><\/span><span class=\"tbcell tbtext\"><time class=\"pubdate sng-link-time dfont\" itemprop=\"datePublished\" datetime=\"2023-01-20\">2023\u5e741\u670820\u65e5<\/time>\u301035\u5206\u21924\u5206\uff01\u3011SpringBoot\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30b9\u30c8\u9ad8\u901f\u5316<\/span><\/a>","protected":false},"excerpt":{"rendered":"<p>\u30c6\u30b9\u30c8\u3092\u66f8\u3044\u3066\u3044\u308b\u3068\u300c\u3042\u308c\u3001\u3069\u3046\u5b9f\u88c5\u3059\u308c\u3070\u3044\u3044\u3093\u3060\u3063\u3051\uff1f\u300d\u3068\u624b\u304c\u6b62\u307e\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u304b\uff1f \u3053\u308c\u8a18\u4e8b\u3067\u306f\u3001\u305d\u3093\u306a\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u307f\u306a\u3055\u307e\u304c\u300c\u3053\u3053\u3055\u3048\u898b\u308c\u3070\u3084\u308a\u305f\u3044\u3053\u3068\u3092\u5b9f\u73fe\u3067\u304d\u308b\u300d\u3092\u76ee\u6307\u3057\u3066\u60c5\u5831\u3092\u307e\u3068\u3081\u3066\u307f\u307e\u3057\u305f\u3002  &#8230; <\/p>\n","protected":false},"author":1,"featured_media":187,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[40,37,5,41],"class_list":["post-164","post","type-post","status-publish","format-standard","has-post-thumbnail","category-6","tag-java","tag-junit","tag-junit5","tag-kotlin"],"jetpack_featured_media_url":"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/junit5_cheatsheet.png","_links":{"self":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=164"}],"version-history":[{"count":11,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/164\/revisions"}],"predecessor-version":[{"id":781,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/164\/revisions\/781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/media\/187"}],"wp:attachment":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}