سؤال

لدي مشكلة في اختبار الوحدة حيث يحتوي الفصل على متغير ثابت يريد تحميل تطبيق الربيع CTX.

هذا الفصل لا يخرج من مصنع الفول ولا يمكنني تغيير هذه الحقيقة.

static ApplicationContext applicationContext = ...;

هذا يعمل بشكل جيد ، ولكن من الصعب ذلك Jmock, ، أو على الأقل ، لا أعرف طريقة ، وحتى يمكنني أن يبدأ الربيع CTX. ليست مثالية لحالة اختبار الوحدة.

هل هناك عمل يعرفه أي شخص؟ لدي خيار لتغيير المتغير الثابت إلى أي شيء أتمنى ..

شكرًا.

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

المحلول

حل هذا بنفسي.

كانت بسيطة حقا في النهاية. جولتد بحاجة إلى لفه الثابت في فصل يمكن أن يسخر منه بعد ذلك.

public class ApplicationContextHolder implements ApplicationContextHoldable {

    protected static ApplicationContext applicationContext = ...;

    @Override
    public ApplicationContext getApplicationContext() {
        return ApplicationContextHolder.applicationContext;
    }

}

نصائح أخرى

لطيف - جيد. المفارقة هي أن الشيء الوحيد الذي يفيده الربيع هو إدارة المفردات ، لذلك لا ينبغي أن تكون هناك حاجة للمتغيرات الثابتة :)

يمكنك استخدام واجهات برمجة تطبيقات JMock المستندة إلى الانعكاس لوضع حقول خاصة / ثابتة

    import static mockit.Deencapsulation.setField;
    //Test method
    public void testSample {
        setField(Sample.class,"isPrivate",true);
        setField(Sample.class,"isStatic",true);
    }

    private class Sample {
        private boolean isPrivate = false;
        private boolean isStatic = false;

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