Просто подведем итоги нашего чата для других заинтересованных пользователей:
Вы можете написать тесты, которые работают на вашем EJB, двумя способами:
- Тестирование вне-The-контейнер .Это означает, что ваши тесты запускаются как другое приложение на другой виртуальной машине Java.В этом случае вам нужно использовать EJB-представление интерфейса Remote и JNDI для определения местоположения EJB.Координаты JNDI создаются, как написано в спецификации EJB 3.1 относительно переносимого синтаксиса JNDI (стр. 81).В случае Glassfish вам просто нужно:
- добавить удаленный интерфейс к вашему classpath (чтобы иметь возможность его использовать),
- добавить gf-client.jar к вашему classpath.
Тогда вы сможете найти удаленный интерфейс вашего EJB, вызвав код, похожий на этот:
public class Main {
private static final String JNDI =
"java:global/yourApp/YourEJBBean!com.test.YourEJBBeanRemote";
public static void main(String[] args) throws NamingException {
Context ctx = new InitialContext();
YourEJBBeanRemote sr = (YourEJBBeanRemote)ctx.lookup(JNDI);
// Invoke some method on 'sr'
}
}
2.Тестирование внутри контейнера .Это означает, что ваши тесты выполняются внутри контейнера и, скорее всего, вместе с вашим приложением.Это позволяет вам использовать внедрение зависимостей, EntityManager, представление локального / безинтерфейсного EJB и так далее.С JBoss Arquillian вы пишете свои тесты, просто предполагая, что все сервисы вам предоставлены.
Новое представление EJB 3.1 без интерфейса похоже на локальное представление, поэтому его нельзя использоватьдля клиентов, проживающих за пределами приложения.