Image

Imagesergey_239 wrote in Imageru_java

ejb3unit

Добрый день.

Пытаюсь разобраться с такой непонятной штуковиной как ejb3unit



Есть a.jar который содердит:

@Local
interface A {...}

@Stateless
class AImpl implements A {
  @EJB
  B b;

  public void doSomething() {
    b.doSomething();
  }
}

и есть b.jar

@Local
interface B {...}

@Stateless
class BImpl implements B {...}


соотвественно в eclipse это 2 разных проекта.

пишу тест

class Test extends MockedSessionBeanJUnit4Fixture<AImpl.class> {

  public void test() {
    a = getBeanToTest();
    b = getMock(B.class);
    ....
    инициализация поведения B
    ....
    a.doSomething();
  }
}

теперь говорим run as -< junit
и получаем что @EJB B b; в классе AImpl осталась null. После небольшого гугления выясняем что если провернуть следующее:

классы проекта A лежат в A/build/classes а проекта B в B/build/classes
Если скопировать содержимое B/build/classes в A/build/classes то каким то чудом тест начинает проходить и NullPointerException изчезает.

т.е. как я понял интерфейсы A и B должны находиться в одном jar'e.

Это баг ejb3unit или нужно что то ещё сконфигурировать?

использую ejb3unit-2.0.0-SNAPSHOT т.е. с ejb3unit-2.0.0 сразу же получаю java.lang.ClassCastException: org.ejb3unit.asm.jar.Type