Самый легкий путь состоял бы в том, чтобы обработать кэширование в Вашем поставщике репозитория. Тем путем Вы не должны изменять код в остальной части Вашего приложения; это будет не обращать внимания на то, что данные подавались из кэша, а не репозитория.
Так, я создал бы интерфейс, что использование контроллеров для передачи с бэкендом, и в реализации этого я добавлю кэширующуюся логику. Оберните все это в хорошем поклоне с некоторым DI, и Ваше приложение будет установлено для легкого тестирования.
I'm assuming you are talking about EJB2.x Session Beans. For these kind of animals, what I like to do is:
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.
В настоящее время я использую 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.