Slide 1

Slide 1 text

BEAN TESTING

Slide 2

Slide 2 text

BECAUSE LIFE IS TOO SHORT FOR INTEGRATION TESTS

Slide 3

Slide 3 text

Florian Fladung florian.fl[email protected] Qaiser Abbasi [email protected]

Slide 4

Slide 4 text

Wofür Wie Was kann ich es verwenden? funktioniert Bean-Testing? ist Bean-Testing?

Slide 5

Slide 5 text

Unit Tests Functional Tests Integration Tests

Slide 6

Slide 6 text

Unit Tests Functional Tests Integration Tests

Slide 7

Slide 7 text

U n it T e s t s Integration Tests

Slide 8

Slide 8 text

CDT Customer Driven Tests

Slide 9

Slide 9 text

UNIT TESTS Schnell Code Einheiten Mock

Slide 10

Slide 10 text

INTEGRATION TESTS

Slide 11

Slide 11 text

Application App Server Int-Tests

Slide 12

Slide 12 text

• Arquillian • Deployment needed • Java EE embedded • Configuration hell

Slide 13

Slide 13 text

There are only 10 types of Testing: Unit Tests Integration Tests

Slide 14

Slide 14 text

JPA Queries Persistence Services CDI Components Integration Test ?? Bean Validation Constraints Distributed Business Logic

Slide 15

Slide 15 text

Unit Test Integrationstest

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

BEAN TESTING

Slide 18

Slide 18 text

Unit Tests BeanTests Integration Tests milliseconds seconds (several) minutes FEEDBACK

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

̣ Since Java EE 6 (2009) ̣ Origin JBoss Seam (Gavin King) ̣ You can inject everything

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Dependency Injection Producer Methods Interceptors Decorators CDI Events CDI Extensions

Slide 23

Slide 23 text

EJB Transactional Security Pooled Remote Interceptors Interceptors Scoped ?

Slide 24

Slide 24 text

CDI Extensions @Stateless public class MyService{} @RequestScoped @Transactional public class MyService{} @EJB private MyService myService; @Inject private MyService myService;

Slide 25

Slide 25 text

https://github.com/NovaTecConsulting/BeanTest

Slide 26

Slide 26 text

Wie kann ich Bean-Test in meinem Projekt einsetzen ? Novatec Novatec Repository http://repository.novatec-gmbh.de/content/repositories/novatec info.novatec bean-test 0.1 test Persistence-Unit “beanTestPU” in src/test/resources/META-INF 1 2 3 Empty beans.xml in src/test/resources/META-INF

Slide 27

Slide 27 text

Wo kann ich Bean-Test einsetzen? 6 5 Dependency Injection 7

Slide 28

Slide 28 text

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)

Slide 29

Slide 29 text

Was kann ich mit Bean-Test testen? BPM Engine Integration (Camunda, Activiti) JSF Backing Beans 3rd Party Libraries Integration

Slide 30

Slide 30 text

Persistence Services Business Functions Services (Façade)

Slide 31

Slide 31 text

Persistence Services Business Functions Services (Façade) Backing Beans (JSF)

Slide 32

Slide 32 text

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ät Zeit und Geld (und Nerven) sparen. Unabhängig von Application Server

Slide 33

Slide 33 text

JavaEE 8 ? https://java.net/jira/browse/JAVAEE_SPEC-35

Slide 34

Slide 34 text

Danke!