Compare commits

...

2 Commits
master ... dev

Author SHA1 Message Date
everywhere.z fb4637386a Merge branch 'refs/heads/master' into dev 2024-06-20 15:38:09 +08:00
everywhere.z 3d76edbb68 给方法级声明式测试用例也加上SPRING AOP的测试用例 2024-06-12 19:00:01 +08:00
3 changed files with 62 additions and 6 deletions

View File

@ -0,0 +1,60 @@
package com.yomahub.liteflow.test.aop;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.flow.LiteflowResponse;
import com.yomahub.liteflow.slot.DefaultContext;
import com.yomahub.liteflow.test.BaseTest;
import com.yomahub.liteflow.test.aop.aspect.CustomAspect;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import javax.annotation.Resource;
/**
* 切面场景单元测试 在声明式组件场景中自定义aspect的aop不生效的因为生成的代理类并不是原类也不是原类的子类而是NodeComponent的子类
* 所以切不到暂且没有想出办法来解决这个测试类暂时不用
*
* @author Bryan.Zhang
*/
@ExtendWith(SpringExtension.class)
@TestPropertySource(value = "classpath:/aop/application.properties")
@SpringBootTest(classes = CustomAOPELDeclMultiSpringbootTest.class)
@EnableAutoConfiguration
@Import(CustomAspect.class)
@ComponentScan({"com.yomahub.liteflow.test.aop.cmp1","com.yomahub.liteflow.test.aop.cmp2"})
public class CustomAOPELDeclMultiSpringbootTest extends BaseTest {
@Resource
private FlowExecutor flowExecutor;
//测试自定义AOP串行场景
@Test
public void testCustomAopS() {
LiteflowResponse response = flowExecutor.execute2Resp("chain1", "it's a request");
DefaultContext context = response.getFirstContextBean();
Assertions.assertTrue(response.isSuccess());
Assertions.assertEquals("before_after", context.getData("a"));
Assertions.assertEquals("before_after", context.getData("b"));
Assertions.assertEquals("before_after", context.getData("c"));
}
//测试自定义AOP并行场景
@Test
public void testCustomAopP() {
LiteflowResponse response = flowExecutor.execute2Resp("chain2", "it's a request");
DefaultContext context = response.getFirstContextBean();
Assertions.assertTrue(response.isSuccess());
Assertions.assertEquals("before_after", context.getData("a"));
Assertions.assertEquals("before_after", context.getData("b"));
Assertions.assertEquals("before_after", context.getData("c"));
}
}

View File

@ -11,13 +11,13 @@ import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class CustomAspect {
@Pointcut("execution(* com.yomahub.liteflow.test.aop.cmp1.*.process(..))")
@Pointcut("execution(* com.yomahub.liteflow.test.aop.cmp1.*.process*(..))")
public void cut() {
}
@Around("cut()")
public Object around(ProceedingJoinPoint jp) throws Throwable {
NodeComponent cmp = (NodeComponent) jp.getThis();
NodeComponent cmp = (NodeComponent)jp.getArgs()[0];
DefaultContext context = cmp.getFirstContextBean();
context.setData(cmp.getNodeId(), "before");
Object returnObj = jp.proceed();

View File

@ -7,8 +7,4 @@
<chain name="chain2">
THEN(a, b, c, WHEN(d, e));
</chain>
<chain name="chain3">
THEN(a, b, c, f);
</chain>
</flow>