Подтвердить что ты не робот

Лучшая текущая структура для модульного тестирования EJB3/JPA

Запуск нового проекта с использованием EJB 3/JPA, в основном сеанса без состояния beans и пакетных заданий. Я использовал JUnit в прошлом на стандартных Java Webapps, и, похоже, он работал очень хорошо. В модульном тестировании EJB2 была боль, и для выполнения вызовов требовался запуск контейнера, такого как JBoss. Теперь, когда мы будем работать в EJB3/JPA, я хотел бы знать, что компании используют для написания и запуска этих тестов. Разве Junit и JMock по-прежнему считаются релевантными или существуют другие более новые рамки, которые появились вокруг, которые мы должны исследовать?

4b9b3361

Ответ 1

ИМХО, да, они все еще актуальны.

С EJB3 вы можете проверить EJB как обычный POJO, либо как управляемый bean с помощью встроенного контейнера EJB.

То же, что и для JPA, вы можете встраивать реализацию JPA для своего теста и использовать базу данных в памяти, или вы можете полностью издеваться над слоем данных.

Для моего последнего проекта EJB я написал немного код клея, чтобы проверить EJB, потому что встроенный EJB-контейнер был недостаточно зрелым, но теперь я бы пошел на встроенный контейнер EJB + JUnit.

Несколько ресурсов

Но есть много других легко доступных

Ответ 2

Для модульного тестирования вы можете использовать JUnit, TestNG и свою любимую фальшивую фреймворк (EasyMock, Mockito, PowerMock, JMockit, JMock).

Для тестирования интеграции вы можете запустить/остановить встраиваемый контейнер (JBoss, OpenEJB, GlassFish v3) из ваших тестов. Или взгляните на Arquillian, очень недавний новый игрок для тестирования интеграции приложений Java EE:

Миссия проекта Arquillian состоит в том, чтобы предоставить простой тестовый жгут, который разработчики могут использовать для создания широкого спектра интеграционных тестов для своих Java-приложений (скорее всего, корпоративных приложений). Внутри контейнера может быть выполнен тестовый пример, развернутый рядом с тестируемым кодом или путем координации с контейнером, выступая в роли клиента для развернутого кода.

Чтобы не вводить излишнюю сложность в среду сборки разработчика, Arquillian прозрачно интегрируется со знакомыми платформами тестирования (например, JUnit 4, TestNG 5), позволяя запускать тесты с использованием существующих тестовых плагинов IDE, Ant и Maven без каких- дополнения.

Также проверьте Улучшение тестовой возможности Java EE с выпуском Arquillian 1.0.0 Alpha 1 и Arquillan. Выглядит интересно ИМО.

Ответ 3

Вы можете перейти на Apache OpenEJB, который представляет собой легкую реализацию EJB3.0, которая может быть встроена в TestNG.

Здесь вы можете найти пример кода, который использует OpenEJB, TestNG и jMockIt для модульного тестирования.

Ответ 4

Один из вариантов также использовать Spring, но, конечно, ваша архитектура будет также основана на Spring на среде исполнения. Причина, по которой мне нравится Spring, заключается в том, что легко вводить все фальшивые данные и объекты во время фазы тестирования, поскольку вы можете комментировать в тестовом примере JUnit, какой файл контекста использовать:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:test-context.xml"})
public class MyClassTest {

    @Autowired
    private MyClass myClass;

    @Test
    public void testMyMethod() {....}

Но если вы все равно не хотите использовать Spring, это совершенно не имеет значения:) С другой стороны, после этого очень легко перейти из Spring.

Ответ 5

Я бы предложил Аркиллиан. С Arquillian вы можете проверить обычные EJB или CDI beans. Вы можете запустить тест снова с помощью встроенного, управляемого или удаленного контейнера EE. Проект Arquillian постоянно поддерживается...

Однако не всегда так легко сделать первый пробный тест arquillian. У вас может возникнуть проблема с поиском зависимостей для правильной версии arquillian и версии контейнера. Я опубликовал учебный сериал об этом. Но чтобы не заставлять меня подозревать в продвижении, ссылка здесь не размещена. Если вам нравится, вы могли бы просто использовать Google Tutorial EJB3 Integration Test с Arquillian part1.