2011-01-22 2 views
1

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

Я отлаживал и смотрел в 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); 
    } 

ответ

0

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

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

+0

Спасибо. Кажется, очень прост в использовании. Попробует. –

+0

@ adem.caliskan Право на! Аркиллиан замечательный. Если это работает для вас, не забудьте принять этот ответ. –