BEAN TESTING
BECAUSE LIFE IS TOO SHORT FOR INTEGRATION TESTS
Wie
Warum
Was
passt Bean-Testing zu Unit- und Integrationstesting?
wird CDI verwendet?
kann ich alles mit Bean-Testing testen?
passt Bean-Testing zum Entwicklungsprozess?kann man mit Bean-Testing Zeit und Geld sparen?kann ich Bean-Testing in meinem aktuellen Projekt einsetzen?
ist Bean-Testing?
UnitTests
Functional Tests
IntegrationTests
UnitTests
Functional Tests
IntegrationTests
UnitTests
IntegrationTests
CDTCustomer Driven Tests
UNIT TESTSSchnell
Code Einheiten
Mock
INTEGRATION TESTS
Application
App Server
Int-Tests
• Arquillian
• Deployment needed
• Java EE embedded
• Configuration hell
There are only 10 types of Testing:
Unit TestsIntegration Tests
JPA Queries
Persistence Services
CDI Components IntegrationTest ??
Bean ValidationConstraints
DistributedBusiness Logic
Unit Test
Integrationstest
BEAN TESTING
langsamesFeedback
schnellesFeedback
großerUmfang
geringerUmfang
UnitTests
IntegrationTests
BeanTests
New in Java EE 6 (2009)
Origin JBoss Seam (Gavin King)
You can inject everything
EJB
TransactionalSecurity
Pooled
Remote
InterceptorsInterceptors
Scoped
?
Application Server
Proxies AOP(Interceptors)
http://cdi-spec.org/
Dependency Injection
Producer Methods
Interceptors Decorators
CDI Events
CDI Extensions
CDI Extensions
@StatelesspublicclassMyService{}
@RequestScoped@TransactionalpublicclassMyService{}
@EJBprivateMyServicemyService;
@InjectprivateMyServicemyService;
PersistenceServices
BusinessFunctions
Services(Façade)
PersistenceServices
BusinessFunctions
Services(Façade)
Backing Beans(JSF)
Simulierter EJB Container in Java SE
Manipulation von Bean Metadata
Zukunftssicher (Java EE 8 and beyond)
Wie sieht ein Bean-Test aus?
Was kann ich mit Bean-Test testen?
Was ist verfügbar? Was kann man testen?
Dependency Injection Dependencies (@EJB)
JPA Runtime Queries, Beziehungen, Constraints
Interceptors & Decorators Security
CDI Events, CDI Producers CDI Events, CDI Producers (@Resource, @PersistenceContext)
Was kann ich mit Bean-Test testen?
BPM Engine Integration(Camunda, Activiti)
JSF Backing Beans
3rd Party LibrariesIntegration
Wo kann ich Bean-Test einsetzen?
6 5 Dependency Injection7
ENTWICKLUNGSPROZESS
Entwicklung Push nachmaster
CI Merge Request Verarbeitung
Push nachstable
CI Integrationstest
Compile Packaging Deployment IntegrationTests
CI Merge Request
Unit Tests BeanTests Integration Tests
millisecondsseconds
(several)minutes
FEEDBACK
BEAN TESTING
Hohe Geschwindigkeit (Feedback) mit großem Umfang DRY – Alles ist schon da (JPA, EJB, CDI, Interceptors, TestNG)
nichtinvasive
TDD ist möglich
Verbesserte QualitätZeit und Geld (und Nerven) sparen.
Unabhängig von Application Server
Wie kann ich Bean-Test in meinem Projekt einsetzen ?
<repository><id>Novatec</id><name>NovatecRepository</name><url>http://repository.novatec-gmbh.de/content/repositories/novatec</url></repository>
<dependency><groupId>info.novatec</groupId><artifactId>bean-test</artifactId><version>0.1</version><scope>test</scope></dependency>
Persistence-Unit “beanTestPU” in src/test/resources/META-INF
1
2
3 Empty beans.xml in src/test/resources/META-INF
https://github.com/NovaTecConsulting/BeanTest
JavaEE 8 ?
https://java.net/jira/browse/JAVAEE_SPEC-35
Danke!