تتكون مساحة العمل هذه من عينات Java EE 7 واختبارات الوحدة. ويتم تصنيفها في أدلة مختلفة، واحد لكل تقنية/JSR.
تحتوي بعض العينات/الاختبارات على وثائق، وإلا فاقرأ الكود. يشير كتاب Java EE 7 Essentials إلى معظم هذه العينات ويقدم شرحًا لها. لا تتردد في إضافة المستندات وإرسال طلب سحب.
يتم اختبار العينات على Payara وGlassFish وWildfly والمزيد باستخدام النظام البيئي Arquillian.
تعليمات موجزة حول كيفية استنساخ العينات وإنشائها واستيرادها وتشغيلها على جهازك المحلي، يقدمها @radcortez في نموذج الفيديو هذا https://www.youtube.com/watch?v=BB4b-Yz9cF0
يمكن أن يكون ملف تعريف حاوية واحد فقط نشطًا في وقت معين وإلا فسيكون هناك تعارضات في التبعية.
هناك 16 ملفًا شخصيًا متاحًا للحاويات لستة خوادم مختلفة:
Payara وGlassFish
payara-ci-managed
سيقوم ملف التعريف هذا بتثبيت خادم Payara وبدء تشغيل الخادم لكل عينة. مفيد لخوادم CI. يمكن تعيين إصدار Payara المستخدم عبر خاصية payara.version
. هذا هو ملف التعريف الافتراضي ولا يلزم تحديده بشكل صريح.
payara-embedded
يستخدم ملف التعريف هذا خادم Payara المضمن ويعمل في نفس JVM مثل TestClass. مفيد للتطوير، ولكن له جانب سلبي يتمثل في بدء تشغيل الخادم لكل عينة.
payara-remote
يتطلب ملف التعريف هذا منك بدء تشغيل خادم Payara خارج الإصدار. ستقوم كل عينة بعد ذلك بإعادة استخدام هذا المثيل لإجراء الاختبارات. مفيد للتطوير لتجنب تكلفة بدء تشغيل الخادم لكل عينة.
يدعم ملف التعريف هذا بعض الاختبارات لتعيين الموقع الذي تم تثبيت Payara فيه عبر خاصية النظام glassfishRemote_gfHome
. على سبيل المثال
-DglassfishRemote_gfHome=/opt/payara171
يُستخدم هذا لإرسال أوامر asadmin لإنشاء موارد الحاوية، مثل المستخدمين في مخزن الهوية.
glassfish-embedded
يستخدم ملف التعريف هذا خادم GlassFish المضمن ويعمل في نفس JVM مثل TestClass. مفيد للتطوير، ولكن له جانب سلبي يتمثل في بدء تشغيل الخادم لكل عينة.
glassfish-remote
يتطلب ملف التعريف هذا منك بدء تشغيل خادم GlassFish خارج البنية. ستقوم كل عينة بعد ذلك بإعادة استخدام هذا المثيل لإجراء الاختبارات. مفيد للتطوير لتجنب تكلفة بدء تشغيل الخادم لكل عينة.
يدعم ملف التعريف هذا بعض الاختبارات لتعيين الموقع الذي تم تثبيت GlassFish فيه عبر خاصية النظام glassfishRemote_gfHome
. على سبيل المثال
-DglassfishRemote_gfHome=/opt/glassfish41
يُستخدم هذا لإرسال أوامر asadmin لإنشاء موارد الحاوية، مثل المستخدمين في مخزن الهوية.
وايلد فلاي
wildfly-ci-managed
سيقوم ملف التعريف هذا بتثبيت خادم Wildfly وبدء تشغيل الخادم لكل عينة. مفيد لخوادم CI. يمكن تعيين إصدار WildFly المستخدم عبر خاصية wildfly.version
.
wildfly-embedded
هذا الملف الشخصي مطابق تقريبًا لملف Wildfly-ci-managed. سيقوم بتثبيت نفس خادم Wildfly وبدء تشغيل هذا الخادم لكل عينة مرة أخرى، ولكن بدلاً من ذلك يستخدم موصل Arquillian المضمن لتشغيله في نفس JVM. مفيد لخوادم CI. يمكن تعيين إصدار WildFly المستخدم عبر خاصية wildfly.version
.
wildfly-remote
يتطلب ملف التعريف هذا منك بدء تشغيل خادم Wildfly خارج الإصدار. ستقوم كل عينة بعد ذلك بإعادة استخدام هذا المثيل لإجراء الاختبارات. مفيد للتطوير لتجنب تكلفة بدء تشغيل الخادم لكل عينة.
wildfly-swarm
يستخدم ملف التعريف هذا WildFly Swarm، والذي يسمح ببناء uberjars التي تحتوي على ما يكفي من خادم تطبيق WildFly. هنا، يتم تحديد أجزاء WildFly المضمنة بناءً على فحص التطبيق والبحث عن واجهات برمجة تطبيقات Java EE المستخدمة بالفعل. يمكن تعيين إصدار WildFly Swarm المستخدم عبر خاصية wildfly.swarm.version
.
تومي
tomee-ci-managed
سيقوم ملف التعريف هذا بتثبيت خادم TomEE وبدء تشغيل هذا الخادم لكل عينة. مفيد لخوادم CI. لا يمكن لملف التعريف هذا الاتصال بخادم قيد التشغيل.
لاحظ أن إصدار TomEE الذي سيتم استخدامه يجب أن يكون موجودًا في مستودع مخضرم متاح. تفترض الإعدادات الافتراضية في ملف التعريف هذا أن محول Arquillian وخادم TomEE لهما نفس الإصدار. على سبيل المثال كلا 7.0.0.
لاستخدام خادم TomEE غير متوفر في maven Central، إحدى طرق استخدامه للعينات هي تثبيته في ملف .m2 محلي كما يلي:
استنساخ TomEE الريبو:
git clone https://github.com/apache/tomee
cd tomee
قم بالتبديل إلى الإصدار المطلوب إذا لزم الأمر، ثم قم بالإنشاء والتثبيت في .m2:
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
mvn clean install -pl arquillian -amd -Dmaven.test.skip=true
تأكد من أن الإصدار المثبت (راجع pom.xml في مشروع TomEE) يطابق tomee.version
في قسم الخصائص في pom.xml الجذر لمشروع العينات.
tomee-embedded
يستخدم ملف التعريف هذا خادم TomEE المضمن ويعمل في نفس JVM مثل TestClass.
الحرية
liberty-managed
سيبدأ ملف التعريف هذا تشغيل خادم Liberty لكل عينة، ويتصل بشكل اختياري بخادم قيد التشغيل يمكنك بدء تشغيله خارج الإنشاء (مع تقييد تشغيل هذا الخادم على المضيف حيث يتم تشغيل الاختبارات باستخدام نفس المستخدم ).
للاتصال بخادم قيد التشغيل، يجب ضبط خاصية النظام org.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer
على true. على سبيل المثال
-Dorg.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer=true
يتطلب ملف التعريف هذا منك تعيين الموقع حيث تم تثبيت Liberty عبر خاصية النظام libertyManagedArquillian_wlpHome
. على سبيل المثال
-DlibertyManagedArquillian_wlpHome=/opt/wlp
يتطلب ملف التعريف هذا أيضًا تكوين ميزة localConnector في server.xml، وإذا كان سيتم تشغيل جميع الاختبارات، فيجب تشغيل ميزة javaee-7.0 على سبيل المثال
< featureManager >
< feature >javaee-7.0</ feature >
< feature >localConnector-1.0</ feature >
</ featureManager >
بالنسبة للإصدارات الأقدم من Liberty (ما قبل 16.0.0.0) وحتى محاولة تنفيذ اختبارات JASPIC، يلزم وجود عملية غش لإنشاء مجموعة في سجل المستخدم الداخلي لـ Liberty:
< basicRegistry id = " basic " >
< group name = " architect " />
</ basicRegistry >
هذا الغش ليس ضروريًا لأحدث إصدارات Liberty (16.0.0.0/2016.7 والإصدارات الأحدث)
liberty-ci-managed
سيقوم ملف التعريف هذا بتنزيل وتثبيت خادم Liberty وبدء تشغيل الخادم لكل عينة. مفيد لخوادم CI. لاحظ أن هذا ليس خادمًا مضمنًا حقيقيًا، ولكنه خادم عادي. يُطلق عليه الآن اسم "مضمن" لأنه لا يلزم تثبيت منفصل حيث يتم تنزيله تلقائيًا.
ويبلوجيك
weblogic-remote
يتطلب ملف التعريف هذا منك بدء تشغيل خادم WebLogic خارج البنية. ستقوم كل عينة بعد ذلك بإعادة استخدام هذا المثيل لإجراء الاختبارات.
يتطلب ملف التعريف هذا منك تعيين الموقع حيث تم تثبيت WebLogic عبر خاصية النظام weblogicRemoteArquillian_wlHome
. على سبيل المثال
-DweblogicRemoteArquillian_wlHome=/opt/wls12210
من المفترض أن يكون اسم المستخدم/كلمة المرور الافتراضية هو "admin" و"admin007" على التوالي. يمكن تغيير ذلك باستخدام خصائص النظام weblogicRemoteArquillian_adminUserName
و weblogicRemoteArquillian_adminPassword
. على سبيل المثال
-DweblogicRemoteArquillian_adminUserName=myuser
-DweblogicRemoteArquillian_adminPassword=mypassword
هر
tomcat-remote
يتطلب ملف التعريف هذا منك بدء تشغيل خادم Tomcat (8.5 أو 9) عادي خارج الإصدار. ستقوم كل عينة بعد ذلك بإعادة استخدام هذا المثيل لإجراء الاختبارات.
يدعم Tomcat العينات التي تستخدم Servlet وJSP وExpression Language (EL) وWebSocket وJASPIC.
يتطلب ملف التعريف هذا تمكين JMX في Tomcat. يمكن القيام بذلك عن طريق إضافة ما يلي إلى [tomcat home]/bin/catalina.sh
:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote=true "
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=localhost "
يتطلب ملف التعريف هذا أيضًا تعيين اسم مستخدم ( tomcat
) وكلمة مرور ( manager
) لتطبيق الإدارة في tomcat-users.xml
. راجع الملف test-utils/src/main/resources/tomcat-users.xml
في هذا المستودع للحصول على مثال كامل.
انتبه إلى أن هذا يجب أن يتم فقط لمثيل Tomcat الذي يتم استخدامه حصريًا للاختبار، لأن ما ورد أعلاه سيجعل تثبيت Tomcat غير آمن تمامًا!
tomcat-ci-managed
سيقوم ملف التعريف هذا بتثبيت خادم Tomcat وبدء تشغيل الخادم لكل عينة. مفيد لخوادم CI. يمكن تعيين إصدار Tomcat المستخدم عبر خاصية tomcat.version
.
تسمح لك الحاويات التي تقوم بتنزيل الخادم وتثبيته (ملفات التعريف *-ci-managed) بتجاوز الإصدار المستخدم، على سبيل المثال:
-Dpayara.version=4.1.1.163
سيؤدي هذا إلى تغيير الإصدار من الإصدار الحالي (على سبيل المثال 4.1.1.171.1) إلى 4.1.1.163 لأغراض اختبار Payara.
-Dglassfish.version=4.1
سيؤدي هذا إلى تغيير الإصدار من الإصدار الحالي (على سبيل المثال 4.1.1) إلى 4.1 لأغراض اختبار GlassFish.
-Dwildfly.version=8.1.0.Final
سيؤدي هذا إلى تغيير الإصدار من الإصدار الحالي (على سبيل المثال 10.1.0.Final) إلى 8.1.0.Final لـ WildFly.
لتشغيلها في وحدة التحكم قم بما يلي :
mvn test -fae
في دليل المستوى الأعلى لبدء اختبارات ملف التعريف الافتراضي.عند تطويرها وتشغيلها من IDE، تذكر تنشيط ملف التعريف قبل إجراء الاختبار.
لمعرفة المزيد عن Arquillian يرجى الرجوع إلى أدلة Arquillian
لتشغيل مجموعة فرعية فقط من الاختبارات، قم بذلك في دليل المستوى الأعلى :
mvn clean install -pl "test-utils,util" -am
cd jaspic
mvn clean test -P liberty-ci-managed
بمساعدتك، يمكننا تحسين هذه المجموعة من العينات والتعلم من بعضنا البعض وتنمية المجتمع المليء بالأشخاص المتحمسين الذين يهتمون بالتكنولوجيا والابتكار وجودة التعليمات البرمجية. كل مساهمة مهمة!
هناك مجموعة من الأشياء التي يجب عليك وضعها في الاعتبار قبل إرسال طلب السحب، حتى نتمكن بسهولة من دمج كل الأشياء الجديدة في الفرع الرئيسي.
تعتمد الاختبارات القياسية على jUnit - على سبيل المثال هذا الالتزام. يجب أن تتوافق تسمية فئات الاختبار مع معايير التسمية المؤكدة **/*Test.java
أو **/*Test*.java
أو **/*TestCase.java
.
من أجل الوضوح والاتساق، ولتقليل التعقيد المسبق، نفضل اختبارات jUnit القياسية باستخدام Java، مع مساعدين إضافيين مثل HtmlUnit وHamcrest وبالطبع Arquillian. من فضلك لا تستخدم بدائل لهذه التقنيات. إذا كان لا بد من إدخال أي تبعية جديدة في هذا المشروع، فيجب أن توفر شيئًا لا تغطيه هذه التبعيات الموجودة.
git pull upstream master
وستكون جاهزًا للاختراق.git checkout -b my_new_cool_feature
هذا كل شيء! مرحبا بكم في المجتمع!
يتم تنفيذ وظائف CI بواسطة Travis. لاحظ أنه نظرًا لطبيعة العينات المقدمة هنا، فمن الطبيعي تمامًا ألا تنجح جميع الاختبارات. يشير هذا عادةً إلى وجود خطأ في الخادم الذي يتم تنفيذ العينات عليه. إذا كنت تعتقد أن الاختبار هو الخلل حقًا، فيرجى إرسال مشكلة أو تقديم حل للعلاقات العامة.
قم بتثبيت عميل Docker من http://boot2docker.io
قم بإنشاء النموذج الذي تريد تشغيله كـ
mvn clean package -DskipTests
على سبيل المثال:
mvn -f jaxrs/jaxrs-client/pom.xml clean package -DskipTests
قم بتغيير السطر الثاني في Dockerfile
لتحديد موقع ملف WAR الذي تم إنشاؤه
قم بتشغيل boot2docker وأعطي الأمر
docker build -it -p 80:8080 javaee7-sample
في غلاف مختلف، اكتشف عنوان IP للحاوية قيد التشغيل على النحو التالي:
boot2docker ip
قم بالوصول إلى العينة كـ http://IP_ADDRESS:80/jaxrs-client/webresources/persons. قد يختلف عنوان URL الدقيق بناءً على العينة.