Правильно ли, что JUnit не работает с JSF на GlassFish v3 без создания экземпляра контейнера ejb? - PullRequest
1 голос
/ 22 января 2011

Я разрабатываю веб-приложение для своей диссертации.Сейчас я нахожусь в той части, где я хочу запускать автоматизированные тесты для этого веб-приложения.Проблема в том, что я не могу запустить этот тест.Stacjtrace говорит, что он не может найти классы, которые необходимы из класса, который я хочу протестировать.

Я отладил и посмотрел в NetBeans, какие классы загружены.И, похоже, был загружен только тот класс, который я тестирую.Кто-то сказал мне, что я должен запустить встроенный GlassFish.

Заранее спасибо

Testcase: testGetInstance(org.iav.io.IOFacadeTest):        Caused an ERROR
null
java.lang.ExceptionInInitializerError
        at org.iav.io.IOFacade.<init>(IOFacade.java:32)
        at org.iav.io.IOFacade.getInstance(IOFacade.java:47)
        at org.iav.io.IOFacadeTest.testGetInstance(IOFacadeTest.java:50)
Caused by: java.lang.NullPointerException
        at org.iav.io.LicenseListFileBean.<clinit>(LicenseListFileBean.java:47)


Testcase: testGetPoolSize(org.iav.io.IOFacadeTest):        Caused an ERROR
Could not initialize class org.iav.io.LicenseListFileBean
java.lang.NoClassDefFoundError: Could not initialize class org.iav.io.LicenseListFileBean
        at org.iav.io.IOFacade.<init>(IOFacade.java:32)
        at org.iav.io.IOFacadeTest.testGetPoolSize(IOFacadeTest.java:63)

Класс IOFacade:

@ApplicationScoped
public class IOFacade extends Observable {

    private static IOFacade instance;
    private UserListFileBean userListFileBean;
    private LicenseListFileBean licenseListFileBean;
    private FileAccessorBean fileAccessorBean;

    /**
     * Constructor for this class. Initializing also dependent classes.
     * Encapsulates IO-Subsystem from beeing direct accessed.
     */
    public IOFacade() {
        licenseListFileBean = LicenseListFileBean.getInstance();
        userListFileBean = UserListFileBean.getInstance();
        fileAccessorBean = FileAccessorBean.getInstance();
        /** Registering this instance at fileAccessorBean to be notified if list
         * has changed.
         */
        addObserver(fileAccessorBean);
    }

1 Ответ

0 голосов
/ 22 января 2011

Да, модульное тестирование включает только тестируемый вами класс.Вы должны смоделировать классы контейнеров для своего модульного теста.

Если то, что вам нужно, это интеграционный или системный тест, который проверяет, как ваш класс взаимодействует с его средой, тогда вам нужно будет запустить приложение ввстроенная среда.Проверьте Arquillian , это простой и удобный способ управления встроенной тестовой средой.Работает с Glassfish 3.0.1, JBoss и некоторыми другими контейнерами.

...