Как внедрить несколько EJB в тестовый класс JUnit - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь протестировать класс с несколькими EJB, связанными с другим EJB.

Как мне вставить все EJB из этого класса в тестовый класс JUnit?

Спасибовы

1 Ответ

0 голосов
/ 11 октября 2018

Вы не должны вводить все зависимости.Вы должны использовать фреймворки, такие как Mockito, для симуляции / моделирования этих зависимостей, чтобы протестировать ваш EJB.Предположим, у вас есть следующий bean-компонент:

@Stateless
public class ServiceBean implements Service {

    @Inject
    private Dao dao;  

    public boolean insert(Someclass someClass){
        return dao.insert(someClass);
    }

}

Для этого вы должны использовать Mockito для имитации Dao (который должен быть интерфейсом, а не конкретным классом) следующим образом:

@RunWith(MockitoJUnitRunner.class)
public class ServiceBeanTest { 

    @Mock
    private Dao daoMock;

    @InjectMocks
    private ServiceBean bean;

    @Test
    public void testInsert() {
        when(daoMock.insert(Matchers.any(SomeClass.class))).thenReturn(true);
        assertTrue(bean.insert(new Someclass()));
    }

}

Что здесь происходит:

  • Mockito создает макет объекта из интерфейса Dao, который будет имитировать реализацию;
  • Этот макет будет введен вServiceBean instance;
  • Используя метод when, вы указываете свой макет.
  • Ваш модульный тест проверяет только поведение ServiceBean, не выполняет никаких тестов на зависимости, которые должны быть проверены вдругой тестовый класс.Это позволяет вам изолировать компоненты в вашем классе.

Сайт Mockito содержит различные учебные пособия о том, как выполнить это правильно.

...