42
BEAN TESTING

BEAN TESTING...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

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BEAN TESTING...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

BEAN TESTING

Page 2: BEAN TESTING...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

BECAUSE LIFE IS TOO SHORT FOR INTEGRATION TESTS

Page 3: BEAN TESTING...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

Carlos Barragan

IT Consultant

@barraganc

[email protected]

Page 4: BEAN TESTING...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

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?

Page 5: BEAN TESTING...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

UnitTests

Functional Tests

IntegrationTests

Page 6: BEAN TESTING...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

UnitTests

Functional Tests

IntegrationTests

Page 7: BEAN TESTING...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

UnitTests

IntegrationTests

Page 8: BEAN TESTING...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

CDTCustomer Driven Tests

Page 9: BEAN TESTING...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

UNIT TESTSSchnell

Code Einheiten

Mock

Page 10: BEAN TESTING...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
Page 11: BEAN TESTING...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

INTEGRATION TESTS

Page 12: BEAN TESTING...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

Application

App Server

Int-Tests

Page 13: BEAN TESTING...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

• Arquillian

• Deployment needed

• Java EE embedded

• Configuration hell

Page 14: BEAN TESTING...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

There are only 10 types of Testing:

Unit TestsIntegration Tests

Page 15: BEAN TESTING...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

JPA Queries

Persistence Services

CDI Components IntegrationTest ??

Bean ValidationConstraints

DistributedBusiness Logic

Page 16: BEAN TESTING...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

Unit Test

Integrationstest

Page 17: BEAN TESTING...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
Page 18: BEAN TESTING...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

BEAN TESTING

Page 19: BEAN TESTING...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
Page 20: BEAN TESTING...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

langsamesFeedback

schnellesFeedback

großerUmfang

geringerUmfang

UnitTests

IntegrationTests

BeanTests

Page 21: BEAN TESTING...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

New in Java EE 6 (2009)

Origin JBoss Seam (Gavin King)

You can inject everything

Page 22: BEAN TESTING...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

EJB

TransactionalSecurity

Pooled

Remote

InterceptorsInterceptors

Scoped

?

Page 23: BEAN TESTING...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

Application Server

Proxies AOP(Interceptors)

Page 24: BEAN TESTING...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
Page 25: BEAN TESTING...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

http://cdi-spec.org/

Page 26: BEAN TESTING...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

Dependency Injection

Producer Methods

Interceptors Decorators

CDI Events

CDI Extensions

Page 27: BEAN TESTING...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

CDI Extensions

@StatelesspublicclassMyService{}

@RequestScoped@TransactionalpublicclassMyService{}

@EJBprivateMyServicemyService;

@InjectprivateMyServicemyService;

Page 28: BEAN TESTING...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
Page 29: BEAN TESTING...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

PersistenceServices

BusinessFunctions

Services(Façade)

Page 30: BEAN TESTING...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

PersistenceServices

BusinessFunctions

Services(Façade)

Backing Beans(JSF)

Page 31: BEAN TESTING...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

Simulierter EJB Container in Java SE

Manipulation von Bean Metadata

Zukunftssicher (Java EE 8 and beyond)

Page 32: BEAN TESTING...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

Wie sieht ein Bean-Test aus?

Page 33: BEAN TESTING...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

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)

Page 34: BEAN TESTING...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

Was kann ich mit Bean-Test testen?

BPM Engine Integration(Camunda, Activiti)

JSF Backing Beans

3rd Party LibrariesIntegration

Page 35: BEAN TESTING...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

Wo kann ich Bean-Test einsetzen?

6 5 Dependency Injection7

Page 36: BEAN TESTING...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

ENTWICKLUNGSPROZESS

Entwicklung Push nachmaster

CI Merge Request Verarbeitung

Push nachstable

CI Integrationstest

Compile Packaging Deployment IntegrationTests

CI Merge Request

Page 37: BEAN TESTING...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

Unit Tests BeanTests Integration Tests

millisecondsseconds

(several)minutes

FEEDBACK

Page 38: BEAN TESTING...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

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

Page 39: BEAN TESTING...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

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

Page 40: BEAN TESTING...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

https://github.com/NovaTecConsulting/BeanTest

Page 41: BEAN TESTING...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

JavaEE 8 ?

https://java.net/jira/browse/JAVAEE_SPEC-35

Page 42: BEAN TESTING...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

Danke!