Я пытаюсь использовать аспектJ с проектом огурца, чтобы добавить условные операторы с огурцом (вы можете подумать, почему .. но я). Он перехватывает определения шагов огурца, которые у меня есть в моем текущем проекте, но у меня также есть фляги зависимостей, которые я хочу ткать, я ткаю его с помощью плагина aspectj-maven, но тогда мой код не может использовать связующий код в этой зависимости, Я считаю, что это потому, что код был изменен из-за переплетения. Как я должен делать это вместо этого?
это плагин maven-aspectj:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<weaveDependencies>
<weaveDependency>
<groupId>com.tsb.gen</groupId>
<artifactId>gen-selenium</artifactId>
</weaveDependency>
</weaveDependencies>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
Зависимость:
<groupId>com.tsb.gen</groupId>
<artifactId>gen-selenium</artifactId>
также используется моим клеевым кодом, который есть в моем проекте.
Если я удаляю, то я могу использовать клейкий код и все остальное, что есть в моем проекте с aspectj, но я не могу использовать все, что находится внутри этой базовой зависимости. Я хочу использовать это.
Мой аспект похож на:
@Around("execution(* *(..)) && " +
"( @annotation(cucumber.api.java.en.And) " +
"|| @annotation(cucumber.api.java.en.But) " +
"|| @annotation(cucumber.api.java.en.Given) " +
"|| @annotation(cucumber.api.java.en.Then) " +
"|| @annotation(cucumber.api.java.en.When) " +
")")
public Object aroundGlueMethod(ProceedingJoinPoint joinPoint) throws Throwable {
ScenarioContext.checkForProgressDisplay();
//ScenarioContext.logToGenieReport("aroundGlueMethod aspect");
//System.out.println("\"aroundGlueMethod aspect\"");
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
Object[] args;
Object obj=null;
// process arguments
args = processArgs(joinPoint.getArgs(),joinPoint.getTarget().getClass().getName());
if (methodHasAnnotation(method, SkipConditionalChecking.class)) {
obj=joinPoint.proceed(args);
} else {
if (ScenarioContext.shouldNextStepGetExecuted()) {
obj=joinPoint.proceed(args);
} else {
writeMessageToCurrentScenario("skipped as condition is false");
logger.info("step skipped as condition is false: {}", joinPoint.getSignature());
}
}
return obj;
}
Что я пытаюсь сделать с огурцом, это что-то вроде:
When If variable '${name}' equals to 'myname'
Then print 'Hey its me'
EndIf
Я могу разобраться с вещами, которые принадлежат моему проекту, но когда я пытаюсь включить определения шагов или склеить код в зависимости, он не распознает определения шагов.
Я пытался использовать время загрузки, но я не уверен, что полностью понимаю, как выполнить обе эти задачи.