Jun 6, 2016

Unit Testing σε projects του Oracle Service Bus

Είναι πολύ καλή πρακτική να έχουμε unit tests σε οποιοδήποτε έργο. Και αν και στην περίπτωση του Oracle SOA Suite υπάρχει ένα ενσωματωμένο testing framework, στην περίπτωση του Service Bus μπορούμε να έχουμε την εκτέλεση unit tests, για παράδειγμα κατασκευασμένων στο SOAP UI, ως τμήμα του maven project μας. Ας δούμε πώς μπορούμε να το κάνουμε αυτό, προσθέτοντας και δυνατότητες continuous integration (CI) στο project μας, ώστε να καταστήσουμε την εκτέλεση των unit tests αυτόνομη.

Στις εκδόσεις 12c, υπάρχει καλή υποστήριξη από maven plugins για τον Weblogic Server και το Service Bus. Έτσι προτού τρέξουμε τα unit tests, μπορούμε να χρησιμοποιήσουμε το Weblogic maven plugin για να εκκινήσουμε τον Weblogic server ή το domain μας.

Σημειώστε πως το maven plugin, επιδέχεται ως configuration parameter ("command") ποια εντολή θα χρησιμοποιηθεί ώστε να ξεκινήσει τον Weblogic (και όλο το domain ενδεχομένως) όπως επίσης και το ποιο είναι το URL ("httpPingUrl") που θα επιβεβαιώσει το πως έχει εκκινήσει ο Weblogic.

Για να προκαλέσουμε το deploy του Oracle Service Bus project μας στο Weblogic, χρησιμοποιούμε το OSB maven plugin, που κάνει bind στο maven phase pre-integration-test.
Έπειτα, για τις ανάγκες του unit testing μας, μπορούμε να φτιάξουμε test cases στο SOAP UI και φυσικά να τα αποθηκεύσουμε ως τμήμα του του OSB project. Για την κλήση του SOAP UI, θα ορίσουμε τα αντίστοιχα repositories στο service bus project pom:
Τέλος για να κάνουμε κλήση του SOAP UI project μας, δεν έχουμε παρά να παραμετροποιήσουμε το SOAP UI Pro maven plugin, δηλώνοντας τις απαραίτητες παραμέτρους (endpoint, project file location)
ώστε να έχουμε το αντίστοιχο αποτέλεσμα, τρέχοντας το mvn integration-test στο OSB project μας.

2 comments:

Michael Mountrakis said...

Βαλε ενα JMeter εξωτερικό απο το IDE και καθαρισες.
Και functional test και performance test, χωρις μπλεξίματα.

Serafeim Karapatis said...

Και το JMeter όπως και το SOAP-UI μπορεί να ενταχθεί στο lifecycle του Maven για unit/integration tests που ήταν και ο στόχος του άρθρου.

Ευχαριστώ για την παρατήρηση !