كيف تكتب اختبار JUnit الذي يمكنه رؤية خدمة EJB الخاصة بي؟

لدي تطبيق Java EE يعمل على WebSphere 7 (باستخدام IBM RAD 7.5/Eclipse).

It's basically user.JSP -> UserServlet -> @Stateless UserService -> UserDAO -> Oracle

أريد أن أكتب بعض اختبارات JUnit لخدمة UserService.

أقوم بتشغيل التطبيق من داخل Eclipse ، فإنه يعمل على WebSphere. لدي اختبار JUnit في مشروع Java جديد في Eclipse. سؤالي هو ، كيف يمكن لاختبار JUnit الخاص بي الوصول إلى مرجع إلى UserService؟

هل هناك طريقة بالنسبة لي للقيام بشيء ما مثل التعليق التوضيحي لـEJB:

public class UserTests extends TestCase {

  @EJB  
  private UserServiceLocal userService;

  public void test1() throws Exception {
    Assert.assertTrue("userService is not null", (userService != null));
  }

}

هنا نسخة أساسية من خدمة المستخدم الخاصة بي:

@Stateless
public class UserService implements UserServiceLocal {

  @EJB
  private UserDAOLocal userDAO;

  /* ... */
}

ملاحظة:EJB لا يحقن أي شيء.

ملاحظة: userService = (UserServiceLocal) جديد InitiatContext (). lookup (UserServiceLocal.JNDI) ؛ لا يعمل أما ، يقول ، "NamingManager.getURLContext لا يمكن العثور على المصنع لهذا النظام: ejblocal"

@Local
public class interface UserServiceLocal {

  public static final String JNDI = "ejblocal:com.myapp.service.UserServiceLocal";

  /* ... */
}

أي اقتراحات هي موضع تقدير كبير!

سلب

0

3 إجابة

في نهاية اليوم ، تم إضافة حل لي واجهة EJB عن بعد إلى EJBs أريد اختبارها من JUnit.

أنا خلقت "مشروع عميل التطبيق" الجديد ووضع اختبارات JUnit هناك. تقوم اختبارات JUnit بإجراء بحث بعيد عن EJB. يبدو للعمل على ما يرام.

ومع ذلك ، باستخدام WebSphere 7 ، اضطررت إلى استخدام الأمر createEJBStubs لإنشاء الأبواق المطلوبة. تفاصيل اكثر هنا و هنا:

http://www-01.ibm.com/support/docview.wss ؟ رمز المستخدم = swg21393419

http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp؟topic=٪2Fcom.ibm.websphere.express.doc٪2Finfo٪2Fexp٪2Fae٪2Frejb_3stubscmd.html

0
وأضاف
هل مازلت تستخدم هذا الحل أو هل انتقلت إلى أركيليان؟ في هذه الحالة ، أود أن أسأل كيف يمكنك التعامل مع التبعيات الموجودة داخل EJBs الخاصة بك.
وأضاف المؤلف narko, مصدر

يرجى استخدام حاوية مضمنة لحل مشكلتك ، أو النظر في استخدام Arquilian لهذه المهمة. سيتيح لك Arquillian إنشاء "نشر Java EE" أثناء التنقل (أي - عبر الرمز) ونشره باستخدام Arquilian إلى خادم التطبيقات الخاص بك ، حتى تتمكن من تشغيل JUnit ، وتشغيل التعليمات البرمجية بالفعل على الخادم الخاص بك عبر اختبارات JUnit.

0
وأضاف

لقد قمت بإنشاء مجمّع maven-plugin للبرنامج النصي createEJBStub.

سبب؟ </قوي>

هذا يسمح لنا ببناء مشاريع maven اختبار التي تعمل كجزء من CI الإعداد ضد طلبنا بعد النشر.

بشكل أكثر تحديدًا مع المخضرم ، هذا يسمح لمشروع الاختبار لدينا:

  1. استخدم إدارة التبعية في Maven لسحب جرة API التي نرسلها إلى مستودع الترابط الداخلي لدينا
  2. قم بإنشاء فئات البرامج الأساسية كجزء من دورة حياة maven "إنشاء المصادر"
  3. تشغيل حالة اختبار junit مقابل خادم التطبيقات مع EJB لإجراء اختبار التكامل.
0
وأضاف