SlideShare a Scribd company logo
1 of 89
Integration Testing Strategies
& Techniques
Ryan Cuprak
Introduction
3ds.com
Ryan Cuprak
President Jakarta EE Ambassador
@jee_ambassadors
@rcuprak
Introduction
https://www.youtube.com/watch?reload=9&v=HiZLfOmH56U
Questions
slido.com
#GeeCON2022
Assertion
No platform other than Java has
better integration testing for server-
side applications.
Why is Jakarta EE Testable?
• Standardization:
• Deployment – configuration & structure (WAR)
• Runtime – containers (Tomcat, Payara, OpenLiberty, etc.)
• Resource Adapters (JDBC, RAR)
• Wells defined technologies (JAX-RS, JPA, JMS…)
• Rich vendor ecosystem
• Standardized build (Maven/Gradle)
Dependency Injection
Test Types
• Unit Tests
• Integration Tests
• Functional Tests
• End-to-End Tests
• Acceptance Testing
• Smoke Testing
Easily tested with Jakarta EE
* https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing
Important to test more than happy
paths.
Test Platform
Arquillian
JBoss project:
• Tests written JUnit or TestNG
• Deploys/manages Java containers
Arquillian Modules:
1. Container Adapter
2. Test Enricher
3. Test Runner
4. Extensions
http://arquillian.org
Added as dependency
to Maven/Gradle
Shrinkwrap
Why Arquillian?
Arquillian deploys and runs container tests.
Arquillian Container Interaction
Remote – container resides in a separate JVM
Managed – container is remove but start/stop controlled
Embedded – resides inside same JVM
Different tests require different approaches!
Arquillian Run Modes
Where does the test run?
Embedded
• Test application internals
• Default mode – not annotation needed
External
• Test how application is used by clients ex. REST API
• JavaScript browser code
• Test web services, remote EJBs, etc.
• Tests annotated with @RunAsClient
Arquillian Test Enrichment
Injection
• @Resource – reference to any JNDI entry
• @EJB – Injects EJB, Local/Remote
• @Inject – CDI Beans
• @PersistenceContext – JPA persistence context
Contexts
• Request and conversation – test method
• Session – test class
• Application – test class
Used in the
tests!
ShrinkWrap
API for programmatically building artifacts
Eliminates system/script spaghetti
Artifacts can be test specific ex:
• Include/don’t include web services
• Exclude/replace initialization logic etc.
Supported archives types: JAR, WAR, EAR, RAR
https://github.com/shrinkwrap
ShrinkWrap API
ShrinkWrap class is the main entry point
Call ShrinkWrap.create() with one of the following:
• GenericArchive – simplest archive type
• JavaArchive – allows for addition of class/package, and manfiest
entries
• EnterpriseArchive - Java EAR type
• WebArchive - Java WAR type
• ResourceAdapterArchive – Java RAR type
WebArchive myArchive = ShrinkWrap.create(WebArchive.class,”app.jar");
ShrinkWrap – Adding Content
Sources of content
• Classpath, file, string, url, empty (placeholder), nested, archive,
byte array
War archive methods:
addClass()
addPackage()
addPackages()
addAsDirectories()
addAsWebInfResource()
addAsResource()
addAsLibraries()
addAsManifestResource()
addAsServiceProvider()
addAsWebResource();
- Shrinkwrap resolvers – Maven & Gradle
ShrinkWrap Example
Debugging:
Programmatically constructing a “war”:
Simple Example
Use Arquillian Test Runner
Inject a CDI Bean
Package Application
Test Application
“JUnit” integration test executes in a container
Container Dependencies
What can we do?
Arquillian + Shrinkwrap + JUnit
• Write JUnits that run in a container
• Write JUnits that call code in a container
• Inject CDI beans/EJBs/resources into a JUnit
• Programmatically construct an application (WAR)
• Programmatically generate or specify configuration files
• Include code from test class path
• Test pieces of an application
Integration Tests Setup
• Convention – end integration test in “IT”.
• Bind integration tests to Maven verify build phase.
• Profiles for embedded, remove, managed tests.
Integration Tests Setup
Remote Tests
Note: This test runs INSIDE of the remote container.
Extending Arquillian
• Testing often requires container setup
• JUnit supports the following:
• @BeforeClass @Before @After @AfterClass
• What about before deploy/undeploy?
Arquillian Container Extension
Arquillian Container Extension…
Allows actions to be performed before/after container deployments.
Leveraging Container Lifecycle
• Payara can be configured via command line.
• Register drivers, connectors, etc.
• Has a programmatic API for running commands (CommandRunner).
• Web configuration console can generate a script.
• More versatile and safer than hand crafted XML config files.
CDI
• CDI = Contexts and Dependency Injection
• Introduced in Java EE 6
• Type-safe dependency injection
• Well-defined life-cycle for stateful objects
• Integrated with Unified Expression Language (EL)
• Interceptors
• Events
• Extensible…
CDI & Testing
CDI simplifies testing:
• Mocking & error simulation using Alternatives
• Verification via events
• Spy on objects using interceptors
Mocking
Interface
Implementation
Mock
Mocking…
beans-alternative.xml
Leveraging Events
Leveraging Events…
Spying
Goal: Intercept and
inspect values
Spying…
• Is the interceptor enabled (controlled per test).
• Used to store capture value.
Spying…
Spying…
ebj-jar.xml – on text classpath
Spying…
Error Simulation
• Verify rollback is NOT
triggered.
• Even if in a try block, an
error will mark transaction
for rollback.
Saves to database
Error Simulation…
Intercepting this method
Error Simulation…
Alternative implementation
to throw error.
Error Simulation…
Deployment specifics bean.xml
enabling alternative of the DAO.
No error should be thrown,
but DaySummary should
not be update.
Testing persistence
Testing Persistence Challenges
• Data source configuration
• Database seeding & cleanup
• Change Verification
• Row ordering, ignoring columns
Arquillian Persistence Extension
• Arquillian Extension
• Leverages dbUnit
• Wraps each test in a separate transaction
• Seeds database
• XML, XLS, YAML, JSON, Custom SQL Scripts
• Compares database state - can exclude columns
http://arquillian.org/arquillian-extension-persistence/
Database Test Configuration
Can optionally provide a test specific persistence.xml file.
Database Test Configuration
payara-resources.xml
arquillian.xml
Both of these are on the test
classpath.
Database Test Example
requestedUser.yml expected-users.yml
Graceful Failure
JPA Caching
Does this test pass?
JPA Caching…
Test fails:
JPA Caching
Database
User A
User B
User C
Second Level
Cache
User A
User B
User C
Entity Manager 1
Entity Manager 1
User A
User C
User C
User B
Note: Default for cacheable is TRUE.
JPA Caching
Server A
Database
Entity Manger Cache
Server B
Entity Manger Cache
• Same caching issue arises in load balanced environment.
• Scale-up problems – simple environment works.
Testing Invalid Data
Testing Invalid Data…
Persistence.xml
JPA Bean Validation disabled in
Prod for performance.
Will this test succeed?
- NO -
Transactions & Tests
Goal: Test that purge works.
Transaction & Tests
Test doesn’t work!
What?
Transactions & Tests
ejb-jar.xml to the rescue!
• Add this test-only ejb-jar to archive using
shrinkit.
• The “purge” method will now be run in a
transaction.
THIS IS custom-
ejb.xml on the test
classpath.
Transactions & Tests
Testing JMS
Testing JMS
To test messaging code:
• Messaging service running
• App/web container configured for messaging
• Detect whether messages were read
• Detect whether messages entered DLQ
• Clean-up messaging system
• Avoid message theft
Testing Setup
1. Download ActiveMQ RAR
2. Start embedded ActiveMQ Broker
3. Start Container
4. Install ActiveMQ RAR
5. Configure Queues/Topics
6. Run Test
7. Clear queues/topics for next test
Retrieve ActiveMQ RAR
Simple download and cache.
Start Embedded Broker
Custom utility class leveraging ActiveMQ API.
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.17.2</version>
<scope>test</scope>
</dependency>
Configure Embedded Payara
Deploys RAR and registers queues.
Test Setup Code
Simple JMS Test
Verify Queue is Empty.
Broker Services Utility
Custom utility wrapping ActiveMQ
APIs to extract data.
Testing Poison Pill Message
• Server expects a JSON message, we are sending it invalid data.
• Message should be dumped into the DLQ - not vanish.
Additional Testing
• Test configuration of MDB pool versus database pools.
• Verify message delivery – pre-fetching
• Test throughput to identify bottlenecks
• Verify failures don’t cascade
• Verify an MDB isn’t corrupted (state kept)
Testing Security
Application Security
• EJB Security
• Who can trigger business logic
• Database Security
• Insert/update/select permissions
• Web Security
• Basic/Form base security
Web Security
EJB
Database
Role Based Testing
----------------
Test will fail with
security exception.
Role Based Testing
Create a proxy to run the test!
Note- This is an EJB only on the test classpath!
Role Based Test
• Proxy runs the test with the correct role.
• Create a proxy for every role.
Role Based Testing
Gotcha – tests will still fail!
admin
Need to configure the embedded container!
Role Based Testing
WEB-INF/payara-web.xml
Note mapping to defaultAdmin &
defaultMember
Role Based Testing
• Configure the embedded container in beforeDeploy()
• Now roles in the app map to a configured role in the container.
Account Testing
• Proxy solves the problem of running with a role.
• Problem, what about the current user session?
Account Testing…
Add a web service for which the container populate principal.
Account Testing…
Custom web.xml for test that
enables basic authentication
Accounting Testing…
This is one strategy for testing with a populated
principal.
Entity Managers
admin member guest
Entity Manager
Database sec_admin_user sec_guest_user
sec_member_user
Entity Manager Verification
Built-in Check
Integration Test
Strategies
• Arqullian rules!
• Leverage CDI to reduce coupling and enable testing
• Break application into testable blocks
• Split tests into remote and embedded
• One test class per test configuration
• XML config file
• Classes
• Use Interceptors where instrumented classes (Mockito
Spies) cannot be used.
Gotchas
• Transaction testing can be tricky.
• Simulating exceptions may not generate expected
rollback.
• MDBs are asynchronous – how long to wait?
• Security testing can be divided into testing roles and
data access via current user.
Integration Testing Suggestions
• Testing different application container versions
• Check if a point release will have any change
• “Easily” verify if another container is feasible
• Check impact of newer Java version.
• Test sporadic errors/failures
• Database down
• Multiple concurrent messages
• Bad data load (data dump loaded without Bean Validation)
Summary
Server-side Java can be
Tested!
Q&A
Twitter: @ctjava
Email: rcuprak@gmail.com / r5k@3ds.com
Blog: cuprak.info
Linkedin: www.linkedin.com/in/rcuprak
Slides: www.slideshare.net/rcuprak/presentations

More Related Content

Similar to Jakarta EE Test Strategies (2022)

API Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberAPI Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberSmartBear
 
Infrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfraInfrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfraTomislav Plavcic
 
Migration strategies 4
Migration strategies 4Migration strategies 4
Migration strategies 4Wenhua Wang
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Mavenelliando dias
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introductionjyoti_lakhani
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 
Owner - Java properties reinvented.
Owner - Java properties reinvented.Owner - Java properties reinvented.
Owner - Java properties reinvented.Luigi Viggiano
 
Comprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionComprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionTechWell
 
Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!Ivan Ivanov
 
JAVA-History-buzzwords-JVM_architecture.pptx
JAVA-History-buzzwords-JVM_architecture.pptxJAVA-History-buzzwords-JVM_architecture.pptx
JAVA-History-buzzwords-JVM_architecture.pptx20EUEE018DEEPAKM
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination ExtRohit Kelapure
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Ryan Cuprak
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpikeos890
 
SFDC Deployments
SFDC DeploymentsSFDC Deployments
SFDC DeploymentsSujit Kumar
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as codeTomasz Cholewa
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 javatwo2011
 
Api testing libraries using java script an overview
Api testing libraries using java script   an overviewApi testing libraries using java script   an overview
Api testing libraries using java script an overviewvodQA
 

Similar to Jakarta EE Test Strategies (2022) (20)

API Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberAPI Testing with Open Source Code and Cucumber
API Testing with Open Source Code and Cucumber
 
Infrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfraInfrastructure testing with Molecule and TestInfra
Infrastructure testing with Molecule and TestInfra
 
Migration strategies 4
Migration strategies 4Migration strategies 4
Migration strategies 4
 
Juggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache MavenJuggling Java EE with Enterprise Apache Maven
Juggling Java EE with Enterprise Apache Maven
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 
Owner - Java properties reinvented.
Owner - Java properties reinvented.Owner - Java properties reinvented.
Owner - Java properties reinvented.
 
Comprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionComprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live Production
 
Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!Test it! Unit, mocking and in-container Meet Arquillian!
Test it! Unit, mocking and in-container Meet Arquillian!
 
JAVA-History-buzzwords-JVM_architecture.pptx
JAVA-History-buzzwords-JVM_architecture.pptxJAVA-History-buzzwords-JVM_architecture.pptx
JAVA-History-buzzwords-JVM_architecture.pptx
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination Ext
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Advance java1.1
Advance java1.1Advance java1.1
Advance java1.1
 
oop unit1.pptx
oop unit1.pptxoop unit1.pptx
oop unit1.pptx
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
CS8392 OOP
CS8392 OOPCS8392 OOP
CS8392 OOP
 
SFDC Deployments
SFDC DeploymentsSFDC Deployments
SFDC Deployments
 
Cloud infrastructure as code
Cloud infrastructure as codeCloud infrastructure as code
Cloud infrastructure as code
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
 
Api testing libraries using java script an overview
Api testing libraries using java script   an overviewApi testing libraries using java script   an overview
Api testing libraries using java script an overview
 

More from Ryan Cuprak

DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)Ryan Cuprak
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaRyan Cuprak
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 

More from Ryan Cuprak (20)

DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 

Recently uploaded

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 

Recently uploaded (20)

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 

Jakarta EE Test Strategies (2022)

Editor's Notes

  1. I would like to start off by saying that Java has probably one of the best ways to test serverside applications.
  2. At the heart of today’s presentations, I am going to be focusing on Arquillian. Enrichers – integrates the code into the container that is executing.
  3. Arquillian enables testing across multiple
  4. Run modes refers to where the tests run,
  5. Previously I talked about enriching.. Within the unit test, Arquillian
  6. Key to testing is the ability to build testable archives.
  7. Let’s start by looking at a simple example…
  8. First we define a utility class that we are going to use to enable interception and to get the value back.
  9. Next we define our interceptor
  10. We enable the interceptor…
  11. Using Arquillian we can optionally provide a custom persistence.xml/.
  12. How was this configured?
  13. You need to be aware of JPA caching when writing integration tests
  14. gotcha -
  15. We run this test, it won’t work…
  16. Just to drive the point home…
  17. Don’t just test security at the web front-end.
  18. https://wall.sli.do/event/d5uXLN57RbE1WqoWD3FFLx?section=88818d25-6c29-4ef6-87be-1cac2674e758