{"id":2499,"date":"2017-01-19T17:00:00","date_gmt":"2017-01-19T17:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2499"},"modified":"2025-06-13T23:03:37","modified_gmt":"2025-06-14T06:03:37","slug":"integration-tests-couchbase-application","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/integration-tests-couchbase-application\/","title":{"rendered":"\ud1b5\ud569 \ud14c\uc2a4\ud2b8 \ubc0f \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158"},"content":{"rendered":"<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc81c\ub300\ub85c \ub41c \ud1b5\ud569 \ud14c\uc2a4\ud2b8\ub97c \ud558\ub824\uba74 \uc778\ud504\ub77c\ub97c \uc644\ubcbd\ud558\uac8c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \ud2b9\ud788 \uac1c\ubc1c\uc790 \ub7a9\ud1b1, CI \ub178\ub4dc \ub610\ub294 \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud574\uc57c \ud558\ub294 \ub2e4\ub978 \uba38\uc2e0\uc744 \uc9c0\uc6d0\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uae30\uac00 \ub2e4\uc18c \uc5b4\ub824\uc6b8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \uc88b\uc740 \ud574\uacb0\ucc45\uc740 \ucee8\ud14c\uc774\ub108\ub97c \uacf5\ud1b5 \ub7f0\ud0c0\uc784\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. Docker\ub294 \ubaa8\ub4e0 \uba38\uc2e0\uc5d0\uc11c \ub3d9\uc77c\ud558\uac8c \uc791\ub3d9\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uac1c\ubc1c\uc790 \ub178\ud2b8\ubd81\uacfc CI \ub178\ub4dc\uc5d0 \uc124\uce58\ub418\uc5b4 \uc788\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.) \uadf8\ub798\uc11c \ub2e4\uc2dc \ud55c \ubc88 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/create-couchbase-docker-images-testcontainers\/\">\ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108<\/a>.<\/p>\n<h2 style=\"box-sizing: border-box\">\ud14c\uc2a4\ud2b8 \ub300\uc0c1<\/h2>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc5ec\ud589 \uc0d8\ud50c\ub85c Couchbase\ub97c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub294 \ud6cc\ub96d\ud55c \uc0d8\ud50c \uc571\uc774 \uc788\uc2b5\ub2c8\ub2e4. Java \ubc31\uc5d4\ub4dc\ub294 \uc5ec\uae30\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/github.com\/couchbaselabs\/try-cb-java\/\">https:\/\/github.com\/couchbaselabs\/try-cb-java\/<\/a>\u00a0\uadf8\ub9ac\uace0 \uc5ec\uae30 \ud504\ub860\ud2b8\uc5d4\ub4dc\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/github.com\/couchbaselabs\/try-cb-frontend\/\">https:\/\/github.com\/couchbaselabs\/try-cb-frontend\/<\/a>. \uc774\ub97c \ud1b5\ud574 N1QL, FTS \ub610\ub294 \ud558\uc704 \ubb38\uc11c\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \uae30\ub2a5\uc744 \uc774\ud574\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud559\uc2b5\uc744 \uc2dc\uc791\ud558\uae30\uc5d0 \uc88b\uc740 \uacf3\uc785\ub2c8\ub2e4. \ubc30\uc6b0\uae30\uc5d0\ub294 \uc88b\uc740 \uacf3\uc774\uc9c0\ub9cc \uc544\uc9c1 \ud1b5\ud569 \ud14c\uc2a4\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc800\ub294 \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc0c8\ub85c\uc6b4 \ud504\ub85c\uc81d\ud2b8\ub97c \uc2dc\uc791\ud588\uc2b5\ub2c8\ub2e4. \uc774 \ud504\ub85c\uc81d\ud2b8\ub294 \ub2e4\uc74c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/github.com\/couchbaselabs\/try-cb-integration-test\">https:\/\/github.com\/couchbaselabs\/try-cb-integration-test<\/a>. \uc774\uac83\uc774 \uc624\ub298 \uc81c\uac00 \uc4f8 \ub0b4\uc6a9\uc785\ub2c8\ub2e4.<\/p>\n<h2 style=\"box-sizing: border-box\">\ud14c\uc2a4\ud2b8 \uc124\uc815<\/h2>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\ud504\ub860\ud2b8\uc5d4\ub4dc\ub97c \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 \uc140\ub808\ub284\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \ud398\uc774\uc9c0\ub97c \ud074\ub9ad\ud560 \uc704\uce58\ub97c \uc9c0\uc815\ud558\uace0, \ud0a4 \uc785\ub825\uc744 \uc785\ub825\ud558\uace0, \ud398\uc774\uc9c0\uc758 \ucf58\ud150\uce20\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc140\ub808\ub284 \ub4dc\ub77c\uc774\ubc84\uc5d0 \ud2b9\uc815 URL\uc5d0\uc11c \ud398\uc774\uc9c0\ub97c \ub85c\ub4dc\ud558\uace0, \ud398\uc774\uc9c0\uac00 \uc62c\ubc14\ub974\uac8c \ub85c\ub4dc\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uace0, \ub9c1\ud06c\ub97c \ud074\ub9ad\ud558\uace0, \uc0c8 \ud398\uc774\uc9c0\uac00 \uc6d0\ud558\ub294 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud588\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc624\ub298\uc740 \uc5ec\uae30\uae4c\uc9c0\uac00 \ud14c\uc2a4\ud2b8\uc758 \uc804\ubd80\uc785\ub2c8\ub2e4. \uc5ec\uae30\uc11c \uc911\uc694\ud55c \uac83\uc740 \uc774\ub97c \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4. \uba3c\uc800 \uc81c \ud14c\uc2a4\ud2b8 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc138\uc694:<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">    @Test\r\n    public void testTab() throws InterruptedException {\r\n        RemoteWebDriver driver = chrome.getWebDriver();\r\n        driver.get(\"https:\/\/trycbfront\");\r\n        WebElement usernameField = (new WebDriverWait(driver, 10))\r\n                .until(ExpectedConditions.presenceOfElementLocated(By.name(\"username\")));\r\n\r\n        \/\/ SIGNUP\r\n        usernameField.sendKeys(\"ld@cb.com\");\r\n        driver.findElementByName(\"password\").sendKeys(\"password\");\r\n        driver.findElementByTagName(\"button\").click();\r\n\r\n        \/\/ Verify SIGNUP\r\n        String textElement = (new WebDriverWait(driver, 10))\r\n                .until(ExpectedConditions.presenceOfElementLocated(By.xpath((\"\/html\/body\/app-root\/div\/div[2]\/div[1]\/div\/div[2]\/app-home\/div[1]\/div\/div[1]\/div[1]\/div\/div\/div[2]\/div\/small\/strong\")))).getText();\r\n        Assert.assertEquals(\"Find a Flight\", textElement);\r\n\r\n        \/\/ Test Cart Page\r\n        navigateToCart(driver);\r\n        textElement = (new WebDriverWait(driver, 10))\r\n                .until(ExpectedConditions.presenceOfElementLocated(By.xpath((\"\/html\/body\/app-root\/div\/div[2]\/div[1]\/div\/div[2]\/app-cart\/div[1]\/button\")))).getText();\r\n        Assert.assertEquals(\"Clear Cart\", textElement);\r\n    }\r\n\r\n    public void navigateToCart(RemoteWebDriver driver) {\r\n        driver.findElementByXPath(\"\/html\/body\/app-root\/div\/div[2]\/div[1]\/div\/div[1]\/div\/app-navbar\/div\/div[3]\/div\/a[2]\").click();\r\n}\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc140\ub808\ub284\uc5d0 \uc775\uc219\ud558\ub2e4\uba74 \ud06c\uace0 \uae34 XPath \uac12\uc744 \ubcf4\uace0 \ub208\uc774 \uc544\ud50c \uac83\uc785\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc774 \uac12\uc740 \ucc3e\uace0\uc790 \ud558\ub294 DOM \uc694\uc18c\uc758 ID\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4. \uc774\uc81c \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud588\uc73c\ub2c8 \uccab \ubc88\uc9f8 \uc904\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4:\u00a0<code style=\"box-sizing: border-box;color: #c7254e;background-color: #f9f2f4;border-radius: 4px;padding: 2px 4px\">\ub9ac\ubaa8\ud2b8\uc6f9\ub4dc\ub77c\uc774\ubc84 \ub4dc\ub77c\uc774\ubc84 = \ud06c\ub86c.get\uc6f9\ub4dc\ub77c\uc774\ubc84();<\/code><\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc140\ub808\ub284 \ub4dc\ub77c\uc774\ubc84\ub294 \ud06c\ub86c \uac1d\uccb4\ub85c \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uac1d\uccb4\ub294 \uc140\ub808\ub284\uc744 \uc2e4\ud589\ud558\ub294 \ucee8\ud14c\uc774\ub108\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108\uc640 \uc140\ub808\ub284 \ud1b5\ud569 \ub355\ubd84\uc5d0 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ucee8\ud14c\uc774\ub108\uc774\uae30 \ub54c\ubb38\uc5d0 \ub2e4\ub978 \uac83\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uba74 \ucee8\ud14c\uc774\ub108\uc5d0\uc11c \ube4c\ub4dc\ud558\uac70\ub098 \ub2e4\ub978 \ucee8\ud14c\uc774\ub108\uc5d0 \uc5f0\uacb0\ud574\uc57c \ud569\ub2c8\ub2e4. \ubb3c\ub860 \uadf8\ub807\uac8c \ud588\uc2b5\ub2c8\ub2e4. \ud2b8\ub798\ube14 \uc0d8\ud50c\uc744 \uc2e4\ud589\ud558\ub824\uba74 \uc138 \uac00\uc9c0\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84, \ud2b8\ub798\ube14 \uc0d8\ud50c \ubc31\uc5d4\ub4dc, \ud2b8\ub798\ube14 \uc0d8\ud50c \ud504\ub860\ud2b8\uc5d4\ub4dc\uac00 \ud544\uc694\ud558\uba70, \ubaa8\ub450 \uc790\uccb4 \ucee8\ud14c\uc774\ub108\uc5d0 \uc788\ub294 \uac83\uc774 \ubc14\ub78c\uc9c1\ud569\ub2c8\ub2e4. \ub2e4\ud589\ud788\ub3c4 \uc800\ud76c\ub294 \uc774\ub4e4 \uac01\uac01\uc5d0 \ub300\ud55c Docker \uc774\ubbf8\uc9c0\ub97c \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc5d0\uc11c\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/github.com\/couchbaselabs\/try-cb-integration-test\/blob\/master\/README.md\">\ud504\ub85c\uc81d\ud2b8 Readme<\/a>\u00a0\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc774 \ubaa8\ub4e0 \uac83\uc774 \uc791\ub3d9\ud558\ub824\uba74 \ud2b9\uc815 \uc21c\uc11c\ub300\ub85c \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \uba3c\uc800 \ubc31\uc5d4\ub4dc\uc5d0 \ud544\uc694\ud558\ubbc0\ub85c Couchabse\ub97c \uc2dc\uc791\ud558\uc138\uc694. \ud504\ub860\ud2b8\uc5d4\ub4dc\uc5d0 \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc5d0 \ubc31\uc5d4\ub4dc\ub97c \uc2dc\uc791\ud558\ub294 \uac83\ubcf4\ub2e4 \uc140\ub808\ub284\uacfc \ube0c\ub77c\uc6b0\uc800\ub97c \ud3ec\ud568\ud558\ub294 \uc140\ub808\ub284 \uc774\ubbf8\uc9c0\uc5d0 \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc5d0 \ud504\ub860\ud2b8\uc5d4\ub4dc\ub97c \uc2dc\uc791\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub2e4\ub978 \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \uac01 \ucee8\ud14c\uc774\ub108\uac00 \uc2dc\uc791\ub418\uace0 \uc900\ube44\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4. \uc900\ube44\ub418\uc5c8\ub2e4\uace0 \ub9d0\ud558\ub294 \uc774\uc720\ub294 \uacbd\uc6b0\uc5d0 \ub530\ub77c \uc2dc\uc791\uacfc \ub2e4\ub97c \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\uba74 \ucee8\ud14c\uc774\ub108\ub97c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \ubc31\uc5d4\ub4dc\uc6a9 Spring Boot \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uacbd\uc6b0, \uac00\ub3d9\ub418\uace0 \uc5f0\uacb0\uc744 \uc218\ub77d\ud560 \uc900\ube44\uac00 \ub418\ub824\uba74 \uc2dc\uac04\uc774 \uc880 \uac78\ub9bd\ub2c8\ub2e4. \ub2e4\ud589\ud788 \ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108\ub294 \uc774 \uc810\uc744 \uace0\ub824\ud558\uc5ec \uba87 \uac00\uc9c0 \ud765\ubbf8\ub85c\uc6b4 \ub300\uae30 \uba54\ucee4\ub2c8\uc998\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee8\ud14c\uc774\ub108\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">    public static final String clusterUser = \"Administrator\";\r\n    public static final String clusterPassword = \"password\";\r\n\r\n    public static CouchbaseContainer couchbaseContainer = new CouchbaseContainer()\r\n            .withFTS(true)\r\n            .withIndex(true)\r\n            .withQuery(true)\r\n            .withTravelSample(true)\r\n            .withClusterUsername(clusterUser)\r\n            .withClusterPassword(clusterPassword)\r\n            .withNewBucket(DefaultBucketSettings.builder().enableFlush(true).name(\"default\").quota(100).replicas(0).type(BucketType.COUCHBASE).build());\r\n\r\n    static {\r\n        couchbaseContainer.start();\r\n    }\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc774 \uc720\ucc3d\ud55c API\ub85c \uc27d\uac8c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 FTS, \uc778\ub371\uc2a4 \ubc0f \ucffc\ub9ac \uc11c\ube44\uc2a4\uac00 \ud65c\uc131\ud654\ub418\uace0 \uc5ec\ud589 \uc0d8\ud50c\uc774 \ubbf8\ub9ac \ub85c\ub4dc\ub418\uba70 \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638, \uae30\ubcf8 \ubc84\ud0b7\ub3c4 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc124\uc815\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc77c\ubc18\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\uba74 \ud14c\uc2a4\ud2b8\uc5d0 @ClassRule\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \ucee8\ud14c\uc774\ub108\uac00 \uc790\ub3d9\uc73c\ub85c \uc2dc\uc791\ub429\ub2c8\ub2e4. \ud558\uc9c0\ub9cc @ClassRule\ub85c \ubaa8\ub4e0 \uac83\uc744 \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\ud558\uac8c \ub429\ub2c8\ub2e4. \uc548\ud0c0\uae5d\uac8c\ub3c4 \uc55e\uc11c \uc124\uba85\ud55c \uac83\ucc98\ub7fc \ucee8\ud14c\uc774\ub108\ub294 \ub2e4\uc74c \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \uac00\ub3d9\ub418\uace0 \uc900\ube44\ub418\uc5b4\uc57c \ud558\uae30 \ub54c\ubb38\uc5d0 \uadf8\ub807\uac8c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc815\uc801 \ucf54\ub4dc \ube14\ub85d\uc744 \ucd94\uac00\ud558\uc5ec \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ucf54\ub4dc\ub4e4\uc740 \ubaa8\ub450 \uc21c\uc11c\ub300\ub85c \uc2e4\ud589\ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc2dc\uc791 \ube14\ub85d\uc5d0\uc11c \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\uba74 \ub2e4\uc74c \uc815\uc801 \ube14\ub85d\uc774 \uc2dc\uc791\ub418\uae30 \uc804\uc5d0 \ucee8\ud14c\uc774\ub108\uac00 \uac00\ub3d9\ub418\uace0 \uc900\ube44\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. CouchbaseContainer \ub300\uae30 \uc804\ub7b5\uc740 Couchbase\uc758 REST API \uc0c1\ud0dc\ub97c \ud3f4\ub9c1\ud558\uace0 \ub178\ub4dc \uc0c1\ud0dc\uac00 \uac74\uac15\ud55c\uc9c0 \ud655\uc778\ud558\uc5ec \uc900\ube44\ub41c \uac83\uc73c\ub85c \uac04\uc8fc\ud558\uace0 \ub300\uae30\ub97c \uc911\uc9c0\ud569\ub2c8\ub2e4. CouchbaseContainer\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \ubcf4\ub824\uba74 \ub2e4\uc74c \ucf54\ub4dc\ub97c \ucc38\uc870\ud558\uc138\uc694.\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/github.com\/couchbaselabs\/try-cb-integration-test\/blob\/master\/src\/test\/java\/trycb\/testcontainers\/CouchbaseContainer.java\">\uc5ec\uae30<\/a>\u00a0\uadf8\ub9ac\uace0 \ub610\ud55c <a href=\"\/blog\/ko\/create-couchbase-docker-images-testcontainers\/\">\uc774\uc804<\/a> <a href=\"\/blog\/ko\/unit-integration-tests-couchbase-docker-container\/\">\ube14\ub85c\uadf8<\/a> <a href=\"\/blog\/ko\/configure-official-couchbase-docker-test\/\">\uac8c\uc2dc\ubb3c<\/a> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 \ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\ub2e4\uc74c \ub2e8\uacc4\ub294 Couchbase\uac00 \uac00\ub3d9\ub418\uace0 \uc900\ube44\ub418\uc5c8\uc73c\ubbc0\ub85c Java \ubc31\uc5d4\ub4dc\ub97c \uc2dc\uc791\ud558\ub294 \uac83\uc785\ub2c8\ub2e4:<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">\r\n    public static GenericContainer trycbBack = new LinkedContainer(\"trycb\/java:latest\")\r\n            .withLinkToContainer(couchbaseContainer, \"couchbase\")\r\n            .withExposedPorts(8080)\r\n            .withCommand(\"-Dspring.couchbase.bootstrap-hosts=\"+couchbaseContainer.getContainerIpAddress())\r\n            .waitingFor(new HttpWaitStrategy().forPath(\"\/wut\").forStatusCode(404));\r\n\r\n    static {\r\n        trycbBack.start();\r\n    }\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc5ec\uae30\uc11c \uc8fc\ubaa9\ud574\uc57c \ud560 \uba87 \uac00\uc9c0 \ud765\ubbf8\ub85c\uc6b4 \uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc55e\uc11c \uc124\uba85\ud55c \uac83\uacfc \uac19\uc740 \uc774\uc720\ub85c \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\ub294 \uc815\uc801 \ube14\ub85d\uc774 \uc874\uc7ac\ud55c\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4. \uc5ec\uae30\uc11c \ud3ec\ud2b8 8080\uc744 \ub178\ucd9c\ud558\uace0 \uc788\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. CouchbaseContainer\uc5d0\ub294 \uae30\ubcf8 Couchbase \uc774\ubbf8\uc9c0 \uc804\uc6a9\uc758 \ud2b9\uc815 \ud074\ub798\uc2a4\uac00 \uc788\uc73c\ubbc0\ub85c \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud3ec\ud2b8\uc5d0 \ub300\ud55c \uae30\ubcf8 \uad6c\uc131\uacfc \uc0ac\uc804 \uc815\uc758\ub41c \ub300\uae30 \uc804\ub7b5\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 GenericContainer\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c \uc774\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \ub300\uae30 \uc804\ub7b5\uc740 \uad6c\uc131\ub41c \uacbd\ub85c\uc5d0 \ub300\ud574 404\ub97c \ubc1b\uc744 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \uc11c\ubc84\uac00 \uac00\ub3d9 \uc911\uc774\uace0 \ud504\ub860\ud2b8\uc5d4\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc751\ub2f5\uc744 \ubc1b\uc73c\uba74 \ub429\ub2c8\ub2e4. \ub610\ud55c Couchbase\uc758 \uc8fc\uc18c\ub97c \uc815\uc758\ud558\ub294 Java \ub9e4\uac1c \ubcc0\uc218\uac00 \uc81c\uacf5\ub418\uace0 CouchbaseContainer \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc624\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\ub9c8\uc9c0\ub9c9\uc73c\ub85c \ub9e4\uc6b0 \uc720\uc6a9\ud55c \uc815\ubcf4\ub294 withLinkToContainer \uba54\uc11c\ub4dc\uc5d0 \ub300\ud55c \ud638\ucd9c\uc785\ub2c8\ub2e4. \uc774 \uba54\uc11c\ub4dc\ub294 GenericContainer API\uc758 \uc77c\ubd80\uac00 \uc544\ub2cc\ub370, \uadf8 \uc774\uc720\ub294 \uc798 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4. \ud655\uc7a5\ud574\uc57c \ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">public class LinkedContainer&gt; extends GenericContainer {\r\n\r\n    public LinkedContainer(String name) {\r\n        super(name);\r\n    }\r\n\r\n    public SELF withLinkToContainer(LinkableContainer otherContainer, String alias) {\r\n        addLink(otherContainer, alias);\r\n        return self();\r\n}\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">CouchbaseContainer\uc640 backemd \uc0ac\uc774\uc5d0 Docker \ub9c1\ud06c\uac00 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ucee8\ud14c\uc774\ub108\uac00 \uc11c\ub85c \ud1b5\uc2e0\ud560 \uc218 \uc788\ub3c4\ub85d \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc774\uc81c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 \ubc31\uc5d4\ub4dc\uac00 \uc900\ube44\ub418\uc5c8\uc73c\ubbc0\ub85c \ud504\ub860\ud2b8\uc5d4\ub4dc\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc740 Angular2 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub0b4\ubd80\uc758\u00a0<a style=\"box-sizing: border-box;background-image: initial;background-position: 0px 0px;background-size: initial;background-repeat: initial;background-attachment: initial;cursor: pointer;color: #a0aabf\" href=\"https:\/\/hub.docker.com\/_\/nginx\/\">\uae30\ubcf8 nginx \ucee8\ud14c\uc774\ub108<\/a>. \ubc31\uc5d4\ub4dc\uc5d0 \uc561\uc138\uc2a4\ud574\uc57c \ud558\ubbc0\ub85c \uc774\uc804 \ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud55c \ub9c1\ud06c\ub97c \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4. \ud55c \uac00\uc9c0 \ud655\uc778\ud574\uc57c \ud560 \uc0ac\ud56d\uc740 Angular \uc571\uc5d0\uc11c \ubc31\uc5d4\ub4dc \uc11c\ubc84\uc758 URL\uc744 \ub3d9\uc801\uc73c\ub85c \ubcc0\uacbd\ud560 \uc218 \uc788\uc5b4\uc57c \ud55c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc740 \ud658\uacbd\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc27d\uac8c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud14c\uc2a4\ud2b8 \uc774\ubbf8\uc9c0\ub294 \ud14c\uc2a4\ud2b8 \ud658\uacbd\uc73c\ub85c \ube4c\ub4dc\ub418\uc5c8\uc73c\ubbc0\ub85c withLinkToContainer \uba54\uc11c\ub4dc\uc5d0 \uc9c0\uc815\ub41c \uc774\ub984\uc778 trycbBack \ud638\uc2a4\ud2b8 \uc774\ub984\uc744 \ucc3e\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \ub2e4\uc2dc \uc815\uc801 \ube14\ub85d\uc5d0\uc11c \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">    public static GenericContainer trycbFront = new LinkedContainer(\"trycb\/front:latest\").withLinkToContainer(trycbBack, \"trycbBack\").withExposedPorts(80);\r\n\r\n    static {\r\n        trycbFront.start();\r\n    }\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\ubaa8\ub4e0 \ucee8\ud14c\uc774\ub108\uac00 \uc2e4\ud589\ub418\uace0 \ub098\uba74 \uc140\ub808\ub284 \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ucee8\ud14c\uc774\ub108\ub294 TestContainers \ud504\ub85c\uc81d\ud2b8\uc758 \uc77c\ubd80\uc774\uba70 \uc5ec\ub7ec \uae30\ub2a5\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Chrome \ub610\ub294 Firefox\ub97c \uc0ac\uc6a9\ud560\uc9c0, \ud14c\uc2a4\ud2b8\ub97c \uae30\ub85d\ud560\uc9c0 \uc5ec\ubd80\ub97c \uacb0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ud76c\uc758 \uacbd\uc6b0 \ud06c\ub86c \ub4dc\ub77c\uc774\ubc84\ub97c \uc0ac\uc6a9\ud558\uba70 \ud14c\uc2a4\ud2b8\uac00 \uae30\ub85d\ub418\uc5b4 \ub300\uc0c1 \ud3ec\ub4e4\ub7ec\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. \ub610\ud55c \ud504\ub860\ud2b8\uc5d4\ub4dc\uc640 \ubc31\uc5d4\ub4dc \ubaa8\ub450\uc5d0 \ub9c1\ud06c\ub97c \ucd94\uac00\ud55c \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud504\ub860\ud2b8\uc5d4\ub4dc\ub294 \ucee8\ud14c\uc774\ub108 \ub0b4\ubd80\uc758 Chrome \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc561\uc138\uc2a4\ub418\uba70, \uc575\uade4\ub7ec \uc571\uc740 \uc774\ub97c \ud1b5\ud574 \ubc31\uc5d4\ub4dc\uc5d0 \uc561\uc138\uc2a4\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc140\ub808\ub284 \ucee8\ud14c\uc774\ub108\uc5d0\uc11c\ub3c4 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub294\uc9c0, \uadf8\ub9ac\uace0 CORS \uad6c\uc131\uc774 \ud1b5\uc2e0\uc744 \ud5c8\uc6a9\ud558\ub294\uc9c0 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre style=\"box-sizing: border-box;margin-bottom: 1.33999rem;color: #333333;background-image: linear-gradient(#ffffff 0px, #ffffff 0.75rem, #f5f7fa 0.75rem, #f5f7fa 2.75rem, #ffffff 2.75rem, #ffffff 4rem);background-position: 0% 0%;background-size: 100% 4rem;background-repeat: initial;background-attachment: initial;border: 1px solid #d3daea;border-radius: 4px;overflow: auto;font-size: 14px;padding: 0.66001rem 9.5px 9.5px;line-height: 2rem;text-align: start\"><code style=\"box-sizing: border-box;color: inherit;background-color: transparent;border-radius: 0px;padding: 0px;font-size: inherit\">    @ClassRule\r\n    public static BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()\r\n            .withLinkToContainer(trycbFront, \"trycbfront\")\r\n            .withLinkToContainer(trycbBack, \"trycbback\")\r\n            .withDesiredCapabilities(DesiredCapabilities.chrome())\r\n            .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, new File(\"target\"));\r\n<\/code><\/pre>\n<p style=\"box-sizing: border-box;padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">\uc774\uc81c \ubaa8\ub4e0 \uc124\uc815\uc774 \uc644\ub8cc\ub418\uc5c8\uc73c\uba70 \uc774 \uae00\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0 \uc81c\uc2dc\ub41c \ud14c\uc2a4\ud2b8\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub3c4\uc6c0\uc774 \ub418\uc168\uae30\ub97c \ubc14\ub77c\uba70, \uc774\uc81c \ud14c\uc2a4\ud2b8 \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase \uae30\ubc18 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc27d\uac8c \ud1b5\ud569 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>","protected":false},"excerpt":{"rendered":"<p>Proper integration tests require a complete setup of your infrastructure. And this can be a litle hard to put in place sometimes, especially when you need to support your developer lapop, your CI node, or any other machine where you [&hellip;]<\/p>","protected":false},"author":49,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815],"tags":[1877],"ppma_author":[9023],"class_list":["post-2499","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","tag-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Integration Tests and your Couchbase Application - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/integration-tests-couchbase-application\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integration Tests and your Couchbase Application\" \/>\n<meta property=\"og:description\" content=\"Proper integration tests require a complete setup of your infrastructure. And this can be a litle hard to put in place sometimes, especially when you need to support your developer lapop, your CI node, or any other machine where you [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/integration-tests-couchbase-application\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-19T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:03:37+00:00\" \/>\n<meta name=\"author\" content=\"Laurent Doguin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ldoguin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"unstructured.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"Integration Tests and your Couchbase Application\",\"datePublished\":\"2017-01-19T17:00:00+00:00\",\"dateModified\":\"2025-06-14T06:03:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/\"},\"wordCount\":1291,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"testing\"],\"articleSection\":[\"Best Practices and Tutorials\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/\",\"name\":\"Integration Tests and your Couchbase Application - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-19T17:00:00+00:00\",\"dateModified\":\"2025-06-14T06:03:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integration Tests and your Couchbase Application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\",\"name\":\"Laurent Doguin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"caption\":\"Laurent Doguin\"},\"description\":\"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/ldoguin\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1985-06-07\",\"gender\":\"male\",\"award\":[\"Devoxx Champion\",\"Couchbase Legend\"],\"knowsAbout\":[\"Java\"],\"knowsLanguage\":[\"English\",\"French\"],\"jobTitle\":\"Director Developer Relation & Strategy\",\"worksFor\":\"Couchbase\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/laurent-doguin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Integration Tests and your Couchbase Application - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/integration-tests-couchbase-application\/","og_locale":"ko_KR","og_type":"article","og_title":"Integration Tests and your Couchbase Application","og_description":"Proper integration tests require a complete setup of your infrastructure. And this can be a litle hard to put in place sometimes, especially when you need to support your developer lapop, your CI node, or any other machine where you [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/integration-tests-couchbase-application\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-19T17:00:00+00:00","article_modified_time":"2025-06-14T06:03:37+00:00","author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"unstructured.io","Est. reading time":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"Integration Tests and your Couchbase Application","datePublished":"2017-01-19T17:00:00+00:00","dateModified":"2025-06-14T06:03:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/"},"wordCount":1291,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["testing"],"articleSection":["Best Practices and Tutorials"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/","url":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/","name":"Integration Tests and your Couchbase Application - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-19T17:00:00+00:00","dateModified":"2025-06-14T06:03:37+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/integration-tests-couchbase-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Integration Tests and your Couchbase Application"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e","name":"\ub85c\ub791 \ub3c4\uadc4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071","url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","caption":"Laurent Doguin"},"description":"Laurent\ub294 \ud30c\ub9ac\uc5d0 \uc0ac\ub294 \uad34\uc9dc \uae08\uc18d\uacf5\ud559\ub3c4\uc785\ub2c8\ub2e4. \uc8fc\ub85c Java\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 AsciiDoc\uc73c\ub85c \uad6c\uc870\ud654\ub41c \ud14d\uc2a4\ud2b8\ub97c \uc791\uc131\ud558\uba70 \ub370\uc774\ud130, \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \ubc0f \uae30\ud0c0 \uc720\ud589\uc5b4\uc5d0 \ub300\ud574 \uc790\uc8fc \uc774\uc57c\uae30\ud569\ub2c8\ub2e4. \ub610\ud55c Clever Cloud\uc640 Nuxeo\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\ub85c \ud65c\ub3d9\ud558\uba70 \ud574\ub2f9 \ucee4\ubba4\ub2c8\ud2f0\uac00 \ub354 \ud06c\uace0 \uac15\ub825\ud558\uac8c \uc131\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uc2dc\uac04\uacfc \uc804\ubb38\uc131\uc744 \ubc14\ucce4\uc2b5\ub2c8\ub2e4. \ud604\uc7ac Couchbase\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc6b4\uc601\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/ldoguin"],"honorificPrefix":"Mr","birthDate":"1985-06-07","gender":"male","award":["Devoxx Champion","Couchbase Legend"],"knowsAbout":["Java"],"knowsLanguage":["English","French"],"jobTitle":"Director Developer Relation & Strategy","worksFor":"Couchbase","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laurent-doguin\/"}]}},"authors":[{"term_id":9023,"user_id":49,"is_guest":0,"slug":"laurent-doguin","display_name":"Laurent Doguin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","author_category":"","last_name":"Doguin","first_name":"Laurent","job_title":"","user_url":"","description":"Laurent\ub294 \ud30c\ub9ac\uc5d0 \uc0ac\ub294 \uad34\uc9dc \uae08\uc18d\uacf5\ud559\ub3c4\uc785\ub2c8\ub2e4. \uc8fc\ub85c Java\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 AsciiDoc\uc73c\ub85c \uad6c\uc870\ud654\ub41c \ud14d\uc2a4\ud2b8\ub97c \uc791\uc131\ud558\uba70 \ub370\uc774\ud130, \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \ubc0f \uae30\ud0c0 \uc720\ud589\uc5b4\uc5d0 \ub300\ud574 \uc790\uc8fc \uc774\uc57c\uae30\ud569\ub2c8\ub2e4. \ub610\ud55c Clever Cloud\uc640 Nuxeo\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\ub85c \ud65c\ub3d9\ud558\uba70 \ud574\ub2f9 \ucee4\ubba4\ub2c8\ud2f0\uac00 \ub354 \ud06c\uace0 \uac15\ub825\ud558\uac8c \uc131\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uc2dc\uac04\uacfc \uc804\ubb38\uc131\uc744 \ubc14\ucce4\uc2b5\ub2c8\ub2e4. \ud604\uc7ac Couchbase\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc6b4\uc601\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2499"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2499\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2499"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}