Take Control of your Integration Testing with TestContainers

Naresha K
Naresha KDeveloper | Technical Excellence Coach | Consultant | Trainer at Independent
Take Control of your
Integration Testing with
TestContainers
Naresha K
@naresha_k

https://blog.nareshak.com/
About me
Developer, Architect &
Tech Excellence Coach
Founder & Organiser
Bangalore Groovy User
Group
Integration Testing?
Take Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainers
Infrastructure as Code
Take Control of your Integration Testing with TestContainers
Infrastructure as Code
Infrastructure as Code
Immutable Infrastructure
Take Control of your Integration Testing with TestContainers
TestContainers
Take Control of your Integration Testing with TestContainers
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
runtimeOnly 'mysql:mysql-connector-java:8.0.22'
testImplementation "org.testcontainers:junit-jupiter:1.15.1"
testCompile "org.testcontainers:mysql:1.15.1"
build.gradle dependencies
@Testcontainers
public class SampleMySqlTest {
@Container
private MySQLContainer mySQLContainer = new
MySQLContainer(DockerImageName.parse("mysql:8"))
.withDatabaseName("foo")
.withUsername("foo")
.withPassword("secret");
@Test
void test1() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
@Test
void test2() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
}
@Testcontainers
public class SampleMySqlTest {
@Container
private MySQLContainer mySQLContainer = new
MySQLContainer(DockerImageName.parse("mysql:8"))
.withDatabaseName("foo")
.withUsername("foo")
.withPassword("secret");
@Test
void test1() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
@Test
void test2() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
}
@Testcontainers
@Container
@Testcontainers
public class SampleMySqlTest {
@Container
private static MySQLContainer mySQLContainer = new
MySQLContainer(DockerImageName.parse("mysql:8"))
.withDatabaseName("foo")
.withUsername("foo")
.withPassword("secret");
@Test
void test1() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
@Test
void test2() {
// invoke SUT && assert
assertTrue(mySQLContainer.isRunning());
}
}
@Testcontainers
public class MySqlTest {
@Container
protected static final MySQLContainer mySQLContainer;
static {
mySQLContainer = new
MySQLContainer(DockerImageName.parse("mysql:8"))
.withDatabaseName("foo")
.withUsername("foo")
.withPassword("secret");
mySQLContainer.start();
}
}
@Testcontainers
public class MySqlTestSuite1 extends MySqlTest {
@Test
void test1() {
assertTrue(mySQLContainer.isRunning());
}
@Test
void test2() {
assertTrue(mySQLContainer.isRunning());
}
}
Case Study #1
@Transactional
class ConferenceService {
def getConferencesInCities(List<String> cities) {
Conference.where {
city in cities
}.list()
}
}
select
this_.id as id1_0_0_, 

this_.version as version2_0_0_, 

this_.name as name3_0_0_, 

this_.city as city4_0_0_
from conference this_
where this_.city in ()
hibernate:
cache:
queries: false
use_second_level_cache: false
use_query_cache: false
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password: ''
logSql: true
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
test:
dataSource:
dbCreate: update
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
Application.yml (Test with H2)
Take Control of your Integration Testing with TestContainers
dataSource:
pooled: true
jmxExport: true
driverClassName: com.mysql.jdbc.Driver
username: root
password: secret
logSql: true
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
test:
dataSource:
dbCreate: update
url: jdbc:mysql://localhost:3306/testapp
Application.yml (Test with MySQL)
Take Control of your Integration Testing with TestContainers
testCompile platform('org.testcontainers:testcontainers-bom:1.12.5')
testCompile 'org.testcontainers:spock'
testCompile 'org.testcontainers:mysql'
build.gradle
dataSource:
pooled: true
jmxExport: true
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
logSql: true
environments:
test:
dataSource:
dbCreate: update
url: jdbc:tc:mysql:8://somehostname:someport/databasename
Application.yml (Test with TestContainers)
@Integration
@Rollback
@Testcontainers
class ConferenceTestContainerSpec extends Specification {
@Shared
MySQLContainer mySQLContainer = new MySQLContainer(
DockerImageName.parse("mysql:8"))
.withDatabaseName("testapp")
.withUsername("user")
.withPassword("secret")
ConferenceService conferenceService
void "should return empty list"() {
given:
List<String> cities = []
when:
List<Conference> conferences =
conferenceService.getConferencesInCities(cities)
then:
conferences.size() == 0
}
Take Control of your Integration Testing with TestContainers
@Integration
@Rollback
@Testcontainers
class ConferenceTestContainerSpec extends Specification {
@Shared
MySQLContainer mySQLContainer = new MySQLContainer()
.withDatabaseName("testapp")
.withUsername("user")
.withPassword("secret")
ConferenceService conferenceService
void "should return empty list"() {
// test code
}
}
dataSource:
driverClassName: org.testcontainers.jdbc.ContainerDatabaseDriver
environments:
test:
dataSource:
dbCreate: update
url: jdbc:tc:mysql:8://somehostname:someport/databasename
Case Study #2
testCompile platform('org.testcontainers:testcontainers-bom:1.15.1')
testCompile 'org.testcontainers:spock'
testCompile 'org.testcontainers:mysql'
testCompile "org.testcontainers:localstack"
build.gradle
@Integration
@Testcontainers
class FileStorageSpec extends Specification {
public static final String TARGET_BUCKET = "testbucket"
AmazonS3Service amazonS3Service
FileStorageService fileStorageService
@Shared
public LocalStackContainer localstack = new LocalStackContainer(
DockerImageName.parse("localstack/localstack:0.11.2"))
.withServices(S3)
void setup() {
AmazonS3 s3 = AmazonS3ClientBuilder
.standard()
.withEndpointConfiguration(
localstack.getEndpointConfiguration(S3))
.withCredentials(
localstack.getDefaultCredentialsProvider())
.build();
amazonS3Service.client = s3
amazonS3Service.createBucket(TARGET_BUCKET)
}
def "file can be stored in s3 storage and read"() {
given:
def filePath = Paths.get("src/test/resources/car.jpg")
InputStream stream = Files.newInputStream(filePath)
when:
fileStorageService.storeFile(TARGET_BUCKET, "vehicles/123.jpg", stream)
then:
amazonS3Service.exists(TARGET_BUCKET, "vehicles/123.jpg")
when:
File file = fileStorageService.readFile(TARGET_BUCKET, "vehicles/123.jpg",
Files.createTempFile(null, null).toAbsolutePath().toString())
then:
file
and:
file.newInputStream().bytes == filePath.bytes
}
https://www.testcontainers.org/modules/databases/
https://www.testcontainers.org/modules/localstack/
@Testcontainers
public class GenericContainerTest {
@Container
private static GenericContainer<?> redis =
new GenericContainer<>(
DockerImageName.parse("redis:6"))
.withExposedPorts(6379);
@Test
void testRedisOps() {
assertTrue(redis.isRunning());
}
}
@Testcontainers
public class GenericContainerTest {
@Container
private static GenericContainer<?> redis =
new GenericContainer<>(
DockerImageName.parse("redis:6"))
.withExposedPorts(6379);
@Test
void testRedisOps() {
assertTrue(redis.isRunning());
}
}
//get host port
redis.getMappedPort(6379)
@Container
private static GenericContainer<?> tomcat = new
GenericContainer<>(
DockerImageName.parse("tomcat:8.5.8-jre8"))
.withExposedPorts(8080);
@Container
private static GenericContainer<?> tomcat = new
GenericContainer<>(
DockerImageName.parse("tomcat:8.5.8-jre8"))
.withExposedPorts(8080)
.withStartupTimeout(Duration.ofMinutes(2));
@Container
private static GenericContainer<?> tomcat = new
GenericContainer<>(
DockerImageName.parse("tomcat:8.5.8-jre8"))
.withExposedPorts(8080)
.waitingFor(Wait.forHttp("/"));
@Container
private static GenericContainer<?> tomcat = new
GenericContainer<>(
DockerImageName.parse("tomcat:8.5.8-jre8"))
.withExposedPorts(8080)
.waitingFor(Wait.forHttp("/")
.forStatusCode(200));
https://www.testcontainers.org/features/startup_and_waits/
web:
image: "tomcat:8.5.50-jdk8-adoptopenjdk-hotspot"
ports:
- "8080:8080"
redis:
image: "redis:6"
docker-compose.yml
@Container
private DockerComposeContainer<?> container = new
DockerComposeContainer<>(
new File("src/test/resources/docker-compose.yml"))
.withExposedService("web_1", 8080)
.withExposedService("redis_1", 6379);
Integration Tests
are not replacements for
Unit Tests
References
https://github.com/naresha/java2days2020testcontainers
https://www.testcontainers.org/
https://www2.slideshare.net/nareshak
Thank You
1 of 50

Recommended

Scada Industrial Control Systems Penetration Testing by
Scada Industrial Control Systems Penetration Testing Scada Industrial Control Systems Penetration Testing
Scada Industrial Control Systems Penetration Testing Yehia Mamdouh
18.8K views40 slides
Maquinas de Estado Finito by
Maquinas de Estado FinitoMaquinas de Estado Finito
Maquinas de Estado FinitoRosangela Perez
13.1K views19 slides
Nfa to-dfa by
Nfa to-dfaNfa to-dfa
Nfa to-dfarsivashankari
4.3K views7 slides
Verilog HDL CODES by
Verilog HDL CODES Verilog HDL CODES
Verilog HDL CODES OmkarDarekar6
647 views157 slides
Faults in Digital VLSI Circuits by
Faults in Digital VLSI CircuitsFaults in Digital VLSI Circuits
Faults in Digital VLSI Circuitsijsrd.com
906 views3 slides
Major project iii 3 by
Major project  iii  3Major project  iii  3
Major project iii 3Gopal Prasad Bansal
758 views33 slides

More Related Content

What's hot

rhoCentralFoam in OpenFOAM by
rhoCentralFoam in OpenFOAMrhoCentralFoam in OpenFOAM
rhoCentralFoam in OpenFOAMDaisuke Matsubara
2.6K views18 slides
Step 7 awl para s7-300 y s7-400 by
Step 7   awl para s7-300 y s7-400Step 7   awl para s7-300 y s7-400
Step 7 awl para s7-300 y s7-400ujap
1.9K views268 slides
Fpga Knowledge by
Fpga KnowledgeFpga Knowledge
Fpga Knowledgeranvirsingh
3.5K views40 slides
Altera Cyclone IV FPGA Customer Presentation by
Altera Cyclone IV FPGA Customer PresentationAltera Cyclone IV FPGA Customer Presentation
Altera Cyclone IV FPGA Customer PresentationAltera Corporation
5K views32 slides
STM32 Microcontroller Clocks and RCC block by
STM32 Microcontroller Clocks and RCC blockSTM32 Microcontroller Clocks and RCC block
STM32 Microcontroller Clocks and RCC blockFastBit Embedded Brain Academy
3.4K views37 slides
TIA PORTAL Sitrain operações binárias e digitais by
TIA PORTAL Sitrain operações binárias e digitaisTIA PORTAL Sitrain operações binárias e digitais
TIA PORTAL Sitrain operações binárias e digitaisJuremir Almeida
1.5K views26 slides

What's hot(20)

Step 7 awl para s7-300 y s7-400 by ujap
Step 7   awl para s7-300 y s7-400Step 7   awl para s7-300 y s7-400
Step 7 awl para s7-300 y s7-400
ujap1.9K views
Fpga Knowledge by ranvirsingh
Fpga KnowledgeFpga Knowledge
Fpga Knowledge
ranvirsingh3.5K views
TIA PORTAL Sitrain operações binárias e digitais by Juremir Almeida
TIA PORTAL Sitrain operações binárias e digitaisTIA PORTAL Sitrain operações binárias e digitais
TIA PORTAL Sitrain operações binárias e digitais
Juremir Almeida1.5K views
Scilab Modelica conference 20150921 by Scilab
Scilab Modelica conference 20150921Scilab Modelica conference 20150921
Scilab Modelica conference 20150921
Scilab5.6K views
异常检测在苏宁的实践 by Leo Zhou
异常检测在苏宁的实践异常检测在苏宁的实践
异常检测在苏宁的实践
Leo Zhou1.3K views
STUCK-OPEN FAULT ANALYSIS IN CMOS TRANSISTOR BASED COMBINATIONAL CIRCUITS by Minh Anh Nguyen
STUCK-OPEN FAULT ANALYSIS IN CMOS TRANSISTOR BASED COMBINATIONAL CIRCUITSSTUCK-OPEN FAULT ANALYSIS IN CMOS TRANSISTOR BASED COMBINATIONAL CIRCUITS
STUCK-OPEN FAULT ANALYSIS IN CMOS TRANSISTOR BASED COMBINATIONAL CIRCUITS
Minh Anh Nguyen895 views
Dft (design for testability) by shaik sharief
Dft (design for testability)Dft (design for testability)
Dft (design for testability)
shaik sharief2.9K views
Introduction to Spark Streaming & Apache Kafka | Big Data Hadoop Spark Tutori... by CloudxLab
Introduction to Spark Streaming & Apache Kafka | Big Data Hadoop Spark Tutori...Introduction to Spark Streaming & Apache Kafka | Big Data Hadoop Spark Tutori...
Introduction to Spark Streaming & Apache Kafka | Big Data Hadoop Spark Tutori...
CloudxLab1.6K views
VLSI Testing Techniques by A B Shinde
VLSI Testing TechniquesVLSI Testing Techniques
VLSI Testing Techniques
A B Shinde14.1K views
MAVSec: Securing the MAVLink Protocol for Ardupilot and PX4 Unmanned Aerial S... by Anis Koubaa
MAVSec: Securing the MAVLink Protocol for Ardupilot and PX4 Unmanned Aerial S...MAVSec: Securing the MAVLink Protocol for Ardupilot and PX4 Unmanned Aerial S...
MAVSec: Securing the MAVLink Protocol for Ardupilot and PX4 Unmanned Aerial S...
Anis Koubaa1.1K views
Microcontroladores pic basic_- by Nando Sata
Microcontroladores pic basic_-Microcontroladores pic basic_-
Microcontroladores pic basic_-
Nando Sata1.7K views
Day2 Verilog HDL Basic by Ron Liu
Day2 Verilog HDL BasicDay2 Verilog HDL Basic
Day2 Verilog HDL Basic
Ron Liu4.7K views

Similar to Take Control of your Integration Testing with TestContainers

Test Automation for NoSQL Databases by
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL DatabasesTobias Trelle
8.7K views26 slides
Integration tests: use the containers, Luke! by
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Roberto Franchini
1.9K views75 slides
Divide and Conquer – Microservices with Node.js by
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsSebastian Springer
2.3K views81 slides
Testing your application on Google App Engine by
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App EngineInphina Technologies
2K views23 slides
Testing Your Application On Google App Engine by
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App EngineIndicThreads
210 views23 slides
Web UI test automation instruments by
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instrumentsArtem Nagornyi
10K views23 slides

Similar to Take Control of your Integration Testing with TestContainers(20)

Test Automation for NoSQL Databases by Tobias Trelle
Test Automation for NoSQL DatabasesTest Automation for NoSQL Databases
Test Automation for NoSQL Databases
Tobias Trelle8.7K views
Integration tests: use the containers, Luke! by Roberto Franchini
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!
Roberto Franchini1.9K views
Divide and Conquer – Microservices with Node.js by Sebastian Springer
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer2.3K views
Testing Your Application On Google App Engine by IndicThreads
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
IndicThreads210 views
Web UI test automation instruments by Artem Nagornyi
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
Artem Nagornyi10K views
GeeCON 2017 - TestContainers. Integration testing without the hassle by Anton Arhipov
GeeCON 2017 - TestContainers. Integration testing without the hassleGeeCON 2017 - TestContainers. Integration testing without the hassle
GeeCON 2017 - TestContainers. Integration testing without the hassle
Anton Arhipov5.4K views
Integration testing for microservices with Spring Boot by Oleksandr Romanov
Integration testing for microservices with Spring BootIntegration testing for microservices with Spring Boot
Integration testing for microservices with Spring Boot
Oleksandr Romanov2.9K views
In the Brain of Hans Dockter: Gradle by Skills Matter
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
Skills Matter1.5K views
Designing REST API automation tests in Kotlin by Dmitriy Sobko
Designing REST API automation tests in KotlinDesigning REST API automation tests in Kotlin
Designing REST API automation tests in Kotlin
Dmitriy Sobko3.1K views
Integration Testing With ScalaTest and MongoDB by Michal Bigos
Integration Testing With ScalaTest and MongoDBIntegration Testing With ScalaTest and MongoDB
Integration Testing With ScalaTest and MongoDB
Michal Bigos10.5K views
Spring and Cloud Foundry; a Marriage Made in Heaven by Joshua Long
Spring and Cloud Foundry; a Marriage Made in HeavenSpring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in Heaven
Joshua Long2.5K views
Deploying windows containers with kubernetes by Ben Hall
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
Ben Hall366 views
Antons Kranga Building Agile Infrastructures by Antons Kranga
Antons Kranga   Building Agile InfrastructuresAntons Kranga   Building Agile Infrastructures
Antons Kranga Building Agile Infrastructures
Antons Kranga1.8K views
Efficient JavaScript Unit Testing, May 2012 by Hazem Saleh
Efficient JavaScript Unit Testing, May 2012Efficient JavaScript Unit Testing, May 2012
Efficient JavaScript Unit Testing, May 2012
Hazem Saleh10.1K views
Gradle 2.2, 2.3 news #jggug by kyon mm
Gradle 2.2, 2.3 news #jggugGradle 2.2, 2.3 news #jggug
Gradle 2.2, 2.3 news #jggug
kyon mm1.8K views

More from Naresha K

The Groovy Way of Testing with Spock by
The Groovy Way of Testing with SpockThe Groovy Way of Testing with Spock
The Groovy Way of Testing with SpockNaresha K
240 views40 slides
Evolving with Java - How to Remain Effective by
Evolving with Java - How to Remain EffectiveEvolving with Java - How to Remain Effective
Evolving with Java - How to Remain EffectiveNaresha K
243 views74 slides
Implementing Resilience with Micronaut by
Implementing Resilience with MicronautImplementing Resilience with Micronaut
Implementing Resilience with MicronautNaresha K
343 views20 slides
Take Control of your Integration Testing with TestContainers by
Take Control of your Integration Testing with TestContainersTake Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainersNaresha K
281 views21 slides
Favouring Composition - The Groovy Way by
Favouring Composition - The Groovy WayFavouring Composition - The Groovy Way
Favouring Composition - The Groovy WayNaresha K
229 views48 slides
Effective Java with Groovy - How Language Influences Adoption of Good Practices by
Effective Java with Groovy - How Language Influences Adoption of Good PracticesEffective Java with Groovy - How Language Influences Adoption of Good Practices
Effective Java with Groovy - How Language Influences Adoption of Good PracticesNaresha K
294 views75 slides

More from Naresha K(20)

The Groovy Way of Testing with Spock by Naresha K
The Groovy Way of Testing with SpockThe Groovy Way of Testing with Spock
The Groovy Way of Testing with Spock
Naresha K240 views
Evolving with Java - How to Remain Effective by Naresha K
Evolving with Java - How to Remain EffectiveEvolving with Java - How to Remain Effective
Evolving with Java - How to Remain Effective
Naresha K243 views
Implementing Resilience with Micronaut by Naresha K
Implementing Resilience with MicronautImplementing Resilience with Micronaut
Implementing Resilience with Micronaut
Naresha K343 views
Take Control of your Integration Testing with TestContainers by Naresha K
Take Control of your Integration Testing with TestContainersTake Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainers
Naresha K281 views
Favouring Composition - The Groovy Way by Naresha K
Favouring Composition - The Groovy WayFavouring Composition - The Groovy Way
Favouring Composition - The Groovy Way
Naresha K229 views
Effective Java with Groovy - How Language Influences Adoption of Good Practices by Naresha K
Effective Java with Groovy - How Language Influences Adoption of Good PracticesEffective Java with Groovy - How Language Influences Adoption of Good Practices
Effective Java with Groovy - How Language Influences Adoption of Good Practices
Naresha K294 views
What's in Groovy for Functional Programming by Naresha K
What's in Groovy for Functional ProgrammingWhat's in Groovy for Functional Programming
What's in Groovy for Functional Programming
Naresha K275 views
Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo... by Naresha K
Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo...Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo...
Effective Java with Groovy & Kotlin - How Languages Influence Adoption of Goo...
Naresha K208 views
Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ... by Naresha K
Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ...Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ...
Effective Java with Groovy & Kotlin How Languages Influence Adoption of Good ...
Naresha K162 views
Eclipse Collections, Java Streams & Vavr - What's in them for Functional Pro... by Naresha K
Eclipse Collections, Java Streams & Vavr - What's in them for  Functional Pro...Eclipse Collections, Java Streams & Vavr - What's in them for  Functional Pro...
Eclipse Collections, Java Streams & Vavr - What's in them for Functional Pro...
Naresha K499 views
Implementing Cloud-Native Architectural Patterns with Micronaut by Naresha K
Implementing Cloud-Native Architectural Patterns with MicronautImplementing Cloud-Native Architectural Patterns with Micronaut
Implementing Cloud-Native Architectural Patterns with Micronaut
Naresha K402 views
Groovy - Why and Where? by Naresha K
Groovy  - Why and Where?Groovy  - Why and Where?
Groovy - Why and Where?
Naresha K79 views
Leveraging Micronaut on AWS Lambda by Naresha K
Leveraging Micronaut on AWS LambdaLeveraging Micronaut on AWS Lambda
Leveraging Micronaut on AWS Lambda
Naresha K310 views
Groovy Refactoring Patterns by Naresha K
Groovy Refactoring PatternsGroovy Refactoring Patterns
Groovy Refactoring Patterns
Naresha K514 views
Implementing Cloud-native Architectural Patterns with Micronaut by Naresha K
Implementing Cloud-native Architectural Patterns with MicronautImplementing Cloud-native Architectural Patterns with Micronaut
Implementing Cloud-native Architectural Patterns with Micronaut
Naresha K667 views
Effective Java with Groovy by Naresha K
Effective Java with GroovyEffective Java with Groovy
Effective Java with Groovy
Naresha K501 views
Evolving with Java - How to remain Relevant and Effective by Naresha K
Evolving with Java - How to remain Relevant and EffectiveEvolving with Java - How to remain Relevant and Effective
Evolving with Java - How to remain Relevant and Effective
Naresha K294 views
Effective Java with Groovy - How Language can Influence Good Practices by Naresha K
Effective Java with Groovy - How Language can Influence Good PracticesEffective Java with Groovy - How Language can Influence Good Practices
Effective Java with Groovy - How Language can Influence Good Practices
Naresha K311 views
Beyond Lambdas & Streams - Functional Fluency in Java by Naresha K
Beyond Lambdas & Streams - Functional Fluency in JavaBeyond Lambdas & Streams - Functional Fluency in Java
Beyond Lambdas & Streams - Functional Fluency in Java
Naresha K186 views
GORM - The polyglot data access toolkit by Naresha K
GORM - The polyglot data access toolkitGORM - The polyglot data access toolkit
GORM - The polyglot data access toolkit
Naresha K523 views

Recently uploaded

Elevate your SAP landscape's efficiency and performance with HCL Workload Aut... by
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...HCLSoftware
6 views2 slides
Copilot Prompting Toolkit_All Resources.pdf by
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdfRiccardo Zamana
6 views4 slides
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...Deltares
9 views32 slides
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsRa'Fat Al-Msie'deen
5 views49 slides
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptxanimuscrm
13 views19 slides
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...Deltares
11 views30 slides

Recently uploaded(20)

Elevate your SAP landscape's efficiency and performance with HCL Workload Aut... by HCLSoftware
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
HCLSoftware6 views
Copilot Prompting Toolkit_All Resources.pdf by Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana6 views
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares9 views
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx by animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm13 views
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by Deltares
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
Deltares11 views
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... by Marc Müller
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Marc Müller36 views
Fleet Management Software in India by Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable11 views
DSD-INT 2023 - Delft3D User Days - Welcome - Day 3 - Afternoon by Deltares
DSD-INT 2023 - Delft3D User Days - Welcome - Day 3 - AfternoonDSD-INT 2023 - Delft3D User Days - Welcome - Day 3 - Afternoon
DSD-INT 2023 - Delft3D User Days - Welcome - Day 3 - Afternoon
Deltares13 views
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller38 views
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 views
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... by Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares9 views
El Arte de lo Possible by Neo4j
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo Possible
Neo4j38 views
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida by Deltares
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - PridaDSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
Deltares18 views
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... by Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares16 views
Consulting for Data Monetization Maximizing the Profit Potential of Your Data... by Flexsin
Consulting for Data Monetization Maximizing the Profit Potential of Your Data...Consulting for Data Monetization Maximizing the Profit Potential of Your Data...
Consulting for Data Monetization Maximizing the Profit Potential of Your Data...
Flexsin 15 views
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary19 views
What Can Employee Monitoring Software Do?​ by wAnywhere
What Can Employee Monitoring Software Do?​What Can Employee Monitoring Software Do?​
What Can Employee Monitoring Software Do?​
wAnywhere21 views

Take Control of your Integration Testing with TestContainers