{"id":2496,"date":"2017-01-17T23:16:37","date_gmt":"2017-01-17T23:16:37","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2496"},"modified":"2025-06-13T23:03:39","modified_gmt":"2025-06-14T06:03:39","slug":"testing-spring-data-couchbase-applications-with-testcontainers","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/testing-spring-data-couchbase-applications-with-testcontainers\/","title":{"rendered":"Teste de aplicativos Spring Data Couchbase com TestContainers"},"content":{"rendered":"<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Em um <a href=\"\/blog\/pt\/create-couchbase-docker-images-testcontainers\/\">anterior<\/a> <a href=\"\/blog\/pt\/configure-official-couchbase-docker-test\/\">s\u00e9rie<\/a> <a href=\"\/blog\/pt\/unit-integration-tests-couchbase-docker-container\/\">de postagens em blogs<\/a> Expliquei como usar TestContainers para seus testes Java Junit. Algumas das quest\u00f5es que n\u00e3o abordamos foram sobre como testar o N1QL, criar seus pr\u00f3prios buckets, \u00edndices etc... Esta postagem ser\u00e1 sobre a cria\u00e7\u00e3o de <a href=\"https:\/\/docs.couchbase.com\/sdk-extensions\/spring-data-couchbase.html\">Dados do Spring Couchbase<\/a> casos de teste e cobrir essas quest\u00f5es que deixamos de lado.<\/p>\n<h2>Porta n\u00e3o configur\u00e1vel de fio r\u00edgido<\/h2>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Uma das limita\u00e7\u00f5es que temos atualmente no Couchbase Server \u00e9 que voc\u00ea n\u00e3o pode alterar algumas das portas padr\u00e3o. Esse \u00e9 um problema com o Docker, pois a altera\u00e7\u00e3o das portas \u00e9 apenas notificada de outra forma. Isso pode ser \u00f3timo porque significa que voc\u00ea pode ter v\u00e1rias inst\u00e2ncias do Couchbase em execu\u00e7\u00e3o na mesma m\u00e1quina. Mas, infelizmente, n\u00e3o funcionar\u00e1, portanto, algumas portas ter\u00e3o de ser corrigidas. Isso pode ser declarado com bastante facilidade com TestContainers usando o m\u00e9todo addFixedExposedPort.<\/p>\n<pre><code style=\"color: inherit;background-color: transparent;padding: 0px;font-size: inherit\">    @Override\r\n    protected void configure() {\r\n        addExposedPorts(8091, 11207, 11210, 11211, 18091, 18092, 18093);\r\n        addFixedExposedPort(8092, 8092);\r\n        addFixedExposedPort(8093, 8093);\r\n        addFixedExposedPort(8094, 8094);\r\n        addFixedExposedPort(8095, 8095);\r\n        setWaitStrategy(new HttpWaitStrategy().forPath(\"\/ui\/index.html#\/\"));\r\n    }\r\n<\/code><\/pre>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Com isso resolvido, nosso Java SDK poder\u00e1 se conectar ao N1QL.<\/p>\n<h2>Caso de teste abstrato do Spring Data Couchbase Docker<\/h2>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">O objetivo aqui \u00e9 criar um caso de teste abstrato que ser\u00e1 usado por qualquer classe que precise de uma inst\u00e2ncia do Couchbase e do Spring Data Couchbase configurado. Ele come\u00e7a como nos posts anteriores, instanciando um campo CouchbaseContainer. Como estamos testando o Spring Data, configuramos o suporte para Index, Query e vamos incluir o FTS para mais tarde.<\/p>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Para garantir que essa classe executar\u00e1 testes para seu aplicativo, adicione o par\u00e2metro\u00a0<code style=\"color: #c7254e;background-color: #f9f2f4;padding: 2px 4px\">@RunWith(SpringRunner.class)<\/code>\u00a0annotation. E para garantir que a configura\u00e7\u00e3o do seu aplicativo seja testada, assim como a nossa configura\u00e7\u00e3o personalizada, adicione\u00a0<code style=\"color: #c7254e;background-color: #f9f2f4;padding: 2px 4px\">@SpringBootTest(classes = {GittalentBackendApplication.class, AbstractSPDataTestConfig.CouchbaseTestConfig.class})<\/code>.<\/p>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Agora, falando sobre configura\u00e7\u00e3o personalizada, do que precisamos? Queremos substituir a configura\u00e7\u00e3o padr\u00e3o do Couchbase do aplicativo. Para isso, precisamos implementar um CouchbaseConfigurer. Essa interface define todo o bean necess\u00e1rio para que o Spring Data Couchbase funcione corretamente. Ela fornece inst\u00e2ncias para CouchbaseEnvironment, ClusterInfo, Cluster e Bucket.<\/p>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Todos eles vir\u00e3o de nossa configura\u00e7\u00e3o do CouchbaseContainer antes da execu\u00e7\u00e3o dos testes. Portanto, precisamos nos certificar de que o cont\u00eainer esteja em execu\u00e7\u00e3o e pronto antes de inicializar todos os beans. Isso pode ser feito adicionando um m\u00e9todo init() anotado com @PostConstruct. Isso nos permitir\u00e1 primeiro garantir que o cont\u00eainer esteja em execu\u00e7\u00e3o e, em seguida, configurar outras coisas. No exemplo a seguir, configuramos um bucket chamado default e configuramos o tipo de \u00edndice como MOI.<\/p>\n<pre><code style=\"color: inherit;background-color: transparent;padding: 0px;font-size: inherit\">@RunWith(SpringRunner.class)\r\n@SpringBootTest(classes = {GittalentBackendApplication.class, AbstractSPDataTestConfig.CouchbaseTestConfig.class})\r\npublic abstract class AbstractSPDataTestConfig {\r\n\r\n    public static final String clusterUser = \"Administrator\";\r\n    public static final String clusterPassword = \"password\";\r\n\r\n    @ClassRule\r\n    public static CouchbaseContainer couchbaseContainer = new CouchbaseContainer()\r\n            .withFTS(true)\r\n            .withIndex(true)\r\n            .withQuery(true)\r\n            .withClusterUsername(clusterUser)\r\n            .withClusterPassword(clusterPassword);\r\n\r\n    @Configuration\r\n    static class CouchbaseTestConfig implements CouchbaseConfigurer {\r\n\r\n        private CouchbaseContainer couchbaseContainer;\r\n\r\n        @PostConstruct\r\n        public void init() throws Exception {\r\n            couchbaseContainer = AbstractSPDataTestConfig.couchbaseContainer;\r\n            BucketSettings settings = DefaultBucketSettings.builder()\r\n                    .enableFlush(true).name(\"default\").quota(100).replicas(0).type(BucketType.COUCHBASE).build();\r\n            settings =  couchbaseCluster().clusterManager(clusterUser, clusterPassword).insertBucket(settings);\r\n            couchbaseContainer.callCouchbaseRestAPI(\"\/settings\/indexes\", \"indexerThreads=0&amp;logLevel=info&amp;maxRollbackPoints=5&amp;storageMode=memory_optimized\", \"Administrator\", \"password\");\r\n            waitForContainer();\r\n        }\r\n\r\n        public void waitForContainer(){\r\n            CouchbaseWaitStrategy s = new CouchbaseWaitStrategy();\r\n            s.withBasicCredentials(clusterUser, clusterPassword);\r\n            s.waitUntilReady(couchbaseContainer);\r\n        }\r\n\r\n        @Override\r\n        @Bean\r\n        public CouchbaseEnvironment couchbaseEnvironment() {\r\n            return couchbaseContainer.getCouchbaseEnvironnement();\r\n        }\r\n\r\n        @Override\r\n        @Bean\r\n        public Cluster couchbaseCluster() throws Exception {\r\n            return couchbaseContainer.geCouchbaseCluster();\r\n        }\r\n\r\n        @Override\r\n        @Bean\r\n        public ClusterInfo couchbaseClusterInfo() throws Exception {\r\n            Cluster cc = couchbaseCluster();\r\n            ClusterManager manager = cc.clusterManager(clusterUser, clusterPassword);\r\n            return manager.info();\r\n        }\r\n\r\n        @Override\r\n        @Bean\r\n        public Bucket couchbaseClient() throws Exception {\r\n            return couchbaseContainer.geCouchbaseCluster().openBucket(\"default\");\r\n        }\r\n\r\n    }\r\n}\r\n<\/code><\/pre>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Depois que tivermos esse caso de teste abstrato, tudo o que precisamos fazer \u00e9 criar uma classe que o estenda e come\u00e7ar a escrever testes! Aqui podemos injetar servi\u00e7os do nosso aplicativo, bem como um Bucket de n\u00edvel inferior. O que voc\u00ea v\u00ea nesse teste \u00e9 primeiro uma chamada para um servi\u00e7o de importa\u00e7\u00e3o que cria documentos. Em seguida, criamos um \u00edndice no bucket padr\u00e3o e testamos uma consulta nele.<\/p>\n<pre><code style=\"color: inherit;background-color: transparent;padding: 0px;font-size: inherit\">public class GitTalentGHImportTests extends AbstractSPDataTestConfig {\r\n\r\n    @Autowired\r\n    private GithubImportService githubImportService;\r\n\r\n    @Autowired\r\n    private Bucket bucket;\r\n\r\n    @Test\r\n    public void importDevAdvocateTeam(){\r\n        githubImportService.importOneDeveloper(\"ldoguin\");\r\n        N1qlQueryResult result = bucket.query(N1qlQuery.simple(\"CREATE PRIMARY INDEX ON default\"));\r\n        N1qlQuery query = N1qlQuery.simple(\"SELECT * FROM default WHERE developerInfo.username = 'ldoguin'\");\r\n        result = bucket.query(query);\r\n        N1qlQueryRow row = result.rows().next();\r\n        Assert.assertNotNull(row);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p style=\"padding-top: 0.66001rem;margin-bottom: 1.33999rem;color: #373d49;font-family: Georgia, Cambria, serif;font-size: 14px;text-align: start\">Como voc\u00ea pode ver, depois que o caso de teste abstrato \u00e9 criado, a quantidade de c\u00f3digo \u00e9 realmente m\u00ednima e corresponde exatamente ao que voc\u00ea deseja testar.<\/p>","protected":false},"excerpt":{"rendered":"<p>In a previous series of blog posts I explained how to use TestContainers for your Java Junit tests. Some of the issues we did not address were about how to test N1QL, create your own buckets, index etc\u2026 This post [&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":[1818],"tags":[1877],"ppma_author":[9023],"class_list":["post-2496","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using TestContainers for Spring Data Couchbase Applications<\/title>\n<meta name=\"description\" content=\"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.\" \/>\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\/pt\/testing-spring-data-couchbase-applications-with-testcontainers\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testing Spring Data Couchbase Applications with TestContainers\" \/>\n<meta property=\"og:description\" content=\"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/testing-spring-data-couchbase-applications-with-testcontainers\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-17T23:16:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:03:39+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=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"Testing Spring Data Couchbase Applications with TestContainers\",\"datePublished\":\"2017-01-17T23:16:37+00:00\",\"dateModified\":\"2025-06-14T06:03:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/\"},\"wordCount\":483,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"testing\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/\",\"name\":\"Using TestContainers for Spring Data Couchbase Applications\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-17T23:16:37+00:00\",\"dateModified\":\"2025-06-14T06:03:39+00:00\",\"description\":\"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#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\/testing-spring-data-couchbase-applications-with-testcontainers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testing Spring Data Couchbase Applications with TestContainers\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/author\/laurent-doguin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using TestContainers for Spring Data Couchbase Applications","description":"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.","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\/pt\/testing-spring-data-couchbase-applications-with-testcontainers\/","og_locale":"pt_BR","og_type":"article","og_title":"Testing Spring Data Couchbase Applications with TestContainers","og_description":"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/testing-spring-data-couchbase-applications-with-testcontainers\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-17T23:16:37+00:00","article_modified_time":"2025-06-14T06:03:39+00:00","author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"unstructured.io","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"Testing Spring Data Couchbase Applications with TestContainers","datePublished":"2017-01-17T23:16:37+00:00","dateModified":"2025-06-14T06:03:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/"},"wordCount":483,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["testing"],"articleSection":["Java"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/","url":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/","name":"Using TestContainers for Spring Data Couchbase Applications","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-17T23:16:37+00:00","dateModified":"2025-06-14T06:03:39+00:00","description":"Find out how to use TestContainers. This Couchbase post will be about building Spring Data Couchbase test cases and cover an array of questions.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/testing-spring-data-couchbase-applications-with-testcontainers\/#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\/testing-spring-data-couchbase-applications-with-testcontainers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Testing Spring Data Couchbase Applications with TestContainers"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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":"pt-BR","@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 \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na 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\/pt\/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","first_name":"Laurent","last_name":"Doguin","user_url":"","author_category":"","description":"Laurent \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2496"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2496\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2496"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}