class AbstractXYZClass{
 ...
 @AroundInvoke
 public Object intercept(InvocationContext ctx) ... {
   log("do intercepting");
   ctx.proceed();
 }
 ...
}

@Stateless
class XYZClass extends AbstractXYZClass{
 ...
 public void iWantToTestThisMethod() {...}
 ...
}


(在服务器上运行此命令,对iWantToTestThisMethod()的拦截工作正常)

在我的单元测试中(使用Needle ... @ObjectUnderTest(implementation=XYZClass.class) ...)@AroundInvoke不会被调用

如何通过XYZClass::iWantToTestThisMethod截获JUnit测试intercept()

最佳答案

Needle4j是一个依赖项注入“模拟器”,它不支持高级生命周期和作用域。因此,您将不得不提出不同的测试策略。
在注入和正确方法交互的验证方面,我会坚持使用needle4j,但是对于实际的框架行为测试,请切换至CDI-Unit或Arquillian之类。

10-06 02:16