Поблочное тестирование EJB

Самый легкий путь состоял бы в том, чтобы обработать кэширование в Вашем поставщике репозитория. Тем путем Вы не должны изменять код в остальной части Вашего приложения; это будет не обращать внимания на то, что данные подавались из кэша, а не репозитория.

Так, я создал бы интерфейс, что использование контроллеров для передачи с бэкендом, и в реализации этого я добавлю кэширующуюся логику. Оберните все это в хорошем поклоне с некоторым DI, и Ваше приложение будет установлено для легкого тестирования.

6
задан Attilah 29 September 2009 в 15:06
поделиться

3 ответа

I'm assuming you are talking about EJB2.x Session Beans. For these kind of animals, what I like to do is:

  • Use the Session Bean as a wrapper that just delegates logic to a POJO that you can test easily outside a container. Outside container testing is better, faster, easier, etc but won't cover things such as deployment descriptor validation - and/or -
  • Use something like Cactus for in-container testing (check the Howto EJB documentation) - and/or -
  • Build and deploy your EJB module with Cargo for integration testing.
7
ответ дан 8 December 2019 в 17:24
поделиться

You don't say which version of EJB you're using. If it's EJB v3, check out Ejb3Unit. From the website:

Ejb3Unit is a JUnit extention and can execute automated standalone junit tests for all EJB 3.0 conform Java EE projects. The out of container test approach leads to short build-test-cycles, because no container deployment is necessary anymore.

However I would advocate separating out functionality from the EJB-specifics. This will allow you to test complex functionality outside the container and without using frameworks such as the above. The majority of your tests would be testing POJOs (plain old Java objects) and relatively few would focus on your persistence framework testing.

EDIT: So if you're using EJB v2 then obviously ignore the first point. The second point remains valid, however.

5
ответ дан 8 December 2019 в 17:24
поделиться

В настоящее время я использую apache openejb в качестве встроенного контейнера для модульных тестов. Хотя это проект EJB3 / JPA, он должен работать так же для EJB2. Для начальной загрузки контейнера в ваших тестах вам просто нужно создать объект InitialContext, который позже можно будет использовать для поиска EJB-компонентов и источников данных:

Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");

// a DataSource named "mysql"
props.put("mysql", "new://Resource?type=DataSource");
props.put("mysql.JdbcDriver", "com.mysql.jdbc.Driver");
props.put("mysql.JdbcUrl", "jdbc:mysql://localhost:3306");
props.put("mysql.JtaManaged", "true");
props.put("mysql.DefaultAutoCommit", "false");
props.put("mysql.UserName", "root");
props.put("mysql.Password", "root");

Context context = new InitialContext(props);
LocalInterface local = (LocalInterface)context.lookup(localInterfaceName + "BeanLocal");
DataSource ds = (DataSource)context.lookup("java:openejb/Resource/mysql");

Изменить : В разделе «Методы тестирования» на есть дополнительная документация. http://openejb.apache.org/3.0/index.html[1118220 impression.

2
ответ дан 8 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

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