Spring DI — Cucumber JVM — Ленивая реализация

У меня есть проект, в котором у меня есть два типа тестов, один из которых требует WebDriver, а другой требует зависимости Custom Queue. При использовании огурца невозможно иметь две отдельные конфигурации Spring, так как это не позволяет вам запустить тест, если классы Annotation on Step отличаются. Поэтому я решил использовать ленивые аннотации для всех Bean-компонентов, которые я автомонтирую, чтобы они создавались только при необходимости.

Кажется, это создает проблему везде, где у меня есть JavascriptExecuter, приведенный к экземпляру WebDriver, в качестве его прокси, а не реального экземпляра WebDriver. Он жалуется, что не может передать com.sun.proxy.$Proxy26 в JavascriptExecuter.

Это также видно при попытке привести WebDriver к интерфейсу HasInputDevices при использовании класса Actions.

Кажется, это происходит, когда WebDriver внедряется в интерфейс.

Кто-нибудь сталкивался с этим, и можно ли лениво создавать экземпляр объекта WebDriver и приводить его по своему желанию.

P.S. Я не могу разбить тестовую структуру на две части, так как один проект зависит от другого.

Спасибо, Джон


person Johnson E    schedule 20.09.2017    source источник


Ответы (1)


Мне пришлось использовать следующее, чтобы вернуть объект из прокси, первоначально размещенный на Приведение объекта Spring Proxy к фактическому классу среды выполнения

private T getTargetObject(Object proxy, Class targetClass) throws Exception {
   while( (AopUtils.isJdkDynamicProxy(proxy))) {
        return (T) getTargetObject(((Advised)proxy).getTargetSource().getTarget(), targetClass);
        }
        return (T) proxy;
}
person Johnson E    schedule 23.09.2017