كيفية اختبار هذا المراقب من org.jboss.seam.postinitialization يعمل بشكل صحيح

StackOverflow https://stackoverflow.com/questions/1762014

سؤال

لقد قمت بإنشاء مكون Seam الذي يتحقق من وجود مستخدم واحد على الأقل مع حقوق المسؤول العالمي وإنشاء واحد إذا كان لا.

@Name("installer")
@Stateless
public class InstallerBean implements Installer, Serializable{
   @Observer("org.jboss.seam.postInitialization")
   public void install() {
      ...
   }

   public boolean isInstalled() {
      ...
   }
}

الآن أحتاج إلى اختبار هذا المثبت بشكل صحيح. أحتاج إلى التحقق من أن isInstalled () إرجاع صحيح والتحقق من وجود المستخدمين والأدوار الصحيحين في قاعدة البيانات. ومع ذلك ، يتم تشغيل seamtest.componenttest.testcomponents () قبل انقضاء التثبيت. أستطيع أن أرى في السجل أن آخر رسائل من المثبت الخاص بي تظهر في منتصف تنفيذ الاختبار الثاني حتى تفشل اختباراتي بشكل عشوائي.

أحاول اختبار المثبت الخاص بي بالطريقة التالية:

public class InstallerTests extends SeamTest {
    @Test
    public void isInstalledTest() {
        new ComponentTest() {
            @Override
            protected void testComponents() {
               ...
            }
        }
    }

    ...
}

كيف يمكنني جعل الاختبار الخاص بي يبدأ بعد تفكيك التثبيت الخاص بي؟

أنا جديد على التماس ، لذا ربما أفعل كل شيء خاطئ تمامًا. من فضلك قل لي ما إذا كانت هناك طريقة أفضل.

هل كانت مفيدة؟

المحلول

ربما قمت بالفعل بحلك مشكلة. هل تسمي بعض الطرق بشكل غير متزامن أثناء تنفيذ install()؟ هذا يمكن أن يؤخر بشكل عشوائي إكمال التثبيت. براغماتية للغاية ولكن ليس الحل الأكثر نظافة هو الاستخدام Thread.sleep(.) في حالة الاختبار الخاصة بك لانتظار إكمال التثبيت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top