BEAN TESTING...Was kann ich mit Bean-Test testen? Was ist verfügbar? Was kann man testen?...

Preview:

Citation preview

BEAN TESTING

BECAUSE LIFE IS TOO SHORT FOR INTEGRATION TESTS

Carlos Barragan

IT Consultant

@barraganc

carlos.barragan@novatec-gmbh.de

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!

Recommended