Cobalt
@Cobalt
Программист - этим все сказано

Не работают unit-тесты

Есть большое многомодульное Java EE приложение на maven. Там используются junit для тестирования бинов. Но все вдруг разом перестали работать. Вывливаются с эксепшеном:

org.apache.openejb.OpenEjbContainer$InitializationException: java.lang.IllegalArgumentException
at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:442)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:76)
at ru.simplgroupp.ejb.TestRules.setUp(TestRules.java:71)

@EJB
Bean1Local bean1;
@EJB
Bean2Local bean2;
@EJB
Bean3Local bean3;

@Before
	public void setUp() throws Exception {
		System.setProperty("javax.xml.bind.JAXBContext","com.sun.xml.internal.bind.v2.ContextFactory");
		
		final Properties p = new Properties();
        p.put(/*настройки бд*/);  
        p.put(/*настройки бд*/);   
        p.put(/*настройки бд*/);  
	
        p.setProperty(Context.INITIAL_CONTEXT_FACTORY,  
        		"org.apache.openejb.client.LocalInitialContextFactory"); 
        
        final Context context = EJBContainer.createEJBContainer(p).getContext();
        context.bind("inject", this);
        

        bean1 = (Bean1Local) context.lookup("java:global/Module1-Name!ru.package_name.Bean1Local");
        bean2 = (Bean2Local) context.lookup("java:global/Module2-Name!ru.package_name.Bean2Local");
        bean3 = (Bean3Local) context.lookup("java:global/Module3-Name!ru.package_name.Bean3Local");
	}


Отваливается именно EJBContainer.createEJBContainer() - пробовал ее по разнму вызывать, и с параметрами и без - разницы нет. Есть подозрения что какие-то из зависимостей мавена сломали все тесты. Но вот как найти и главное как бороться.... уже неделю не работает.

Подскажите кто в теме?
  • Вопрос задан
  • 3056 просмотров
Решения вопроса 1
Cobalt
@Cobalt Автор вопроса
Программист - этим все сказано
Спустя столько времени, таки разобрался в проблеме. Корень кроется в 8й JDK. Для нее OpenEJB должна быть более новой версии.

<dependency>
            <groupId>org.apache.openejb</groupId>
            <artifactId>openejb-core</artifactId>
            <version>4.7.2</version>
            <scope>test</scope>
        </dependency>


Так все работает
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@j_wayne
Версию OpenEJB в студию. Надо заглянуть в исходники, и посмотреть, что там такое в 442 строчке. С текущей версией номера строк не совпадают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы