Globalcode – Open4education
Java Enterprise - Testcontainers
Sandro L Giacomozzi
@sandrogiacom
X de testes
O que podemos fazer como desenvolvedores ?
● Testes de Unidade
Verifica uma unidade (a menor parte do software) para garantir que tem o comportamento
esperado. Neste tipo de teste, a unidade é testada de forma isolada, sem considerar nenhuma
dependência ou integração.
● Testes de Integração
Verifica que uma unidade tem o comportamento esperado quanto funciona integrada com as
partes das quais depende. Pode verificar a integração entre uma classe e o banco de dados, entre
um módulo e um web service, etc.
Globalcode – Open4education
https://martinfowler.com/bliki/TestPyramid.html
Testes de Unidade - Mocks
Globalcode – Open4education
● Para suportar uma cobertura alta de teste, os desenvolvedores acabam
deixando os testes de unidade complexos e cheios de mocks.
● Testes integrados são demorados e dependem de um ambiente prévio.
Quando utilizado com bancos de dados, é comum o uso H2.
● Quandos os testes não entregam valor, a tendência é serem abandonados.
● Testes de integração podem ter um escopo amplo ou limitado.
https://martinfowler.com/bliki/IntegrationTest.html
Unidade x Integrado x Integrado
https://www.testcontainers.org/
Components
● Database containers
○ Mysql, Oracle, SQL Server, MariaDB, PostgreSQL,
Cassandra, Couchbase, DynamoDB
● Generic containers
○ With Dockerfile or Docker compose
● Web browsers containers
○ Selenium compatible, video recording
Globalcode – Open4education
https://martinfowler.com/bliki/TestPyramid.html
TESTCONTAINERS
Por que?
DEMO
https://git.io/f4STp
Let’s code!
Automação
Automação
Globalcode – Open4education
More Testcontainers
● Temporary database containers - specialized Microsoft SQL Server,
MariaDB, MySQL, PostgreSQL, Oracle XE and Virtuoso container support
● Webdriver containers - run a Dockerized Chrome or Firefox browser ready for
Selenium/Webdriver operations - complete with automatic video recording
● Generic containers - run any Docker container as a test dependency
● Docker compose - reuse services defined in a Docker Compose YAML file
● Dockerfile containers - run a container that is built on-the-fly from a Dockerfile
Obrigado!
https://github.com/sandrogiacom
https://www.guiadojava.com.br/
Need help?

Java enterprise - testcontainers