gpt4 book ai didi

java - 模拟注入(inject)的 SessionContext

转载 作者:行者123 更新时间:2023-11-30 11:34:30 26 4
gpt4 key购买 nike

我将 SessionContext 作为资源注入(inject) EJB(实现容器管理的事务):

@Stateless(name = "XXX", mappedName = "PPP-MMM-CCC")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
public class Xxx implements ItsRemoteInterface {
@Resource
private SessionContext sctx;
....
}

我的单元测试失败了,因为“sctx”在运行时为空(NullPointerException)。所以我想解决这个问题的唯一方法是创建一个实现 SessionContext 的 FakeSessionContext 类,然后我可以在测试期间使用它。

instance = new Xxx();
sessionContextResourceField = Xxx.class.getDeclaredField("sctx");
sessionContextResourceField.setAccessible(true);
sessionContextResourceField.set(instance, new FakeInitialContext());

但在我这样做之前,我想知道是否有更优雅的方式?除了创建 FakeSessionContext 类之外?类似于工厂类?

如有兴趣,我使用的是 jUnit 4.10 和 jmockit 0.999.15。

最佳答案

使用 jmockit 为您创建 session 上下文的模拟版本,并使用 jmockit 版本的“when...return”语句来确保模拟上下文返回您需要的值。

关于java - 模拟注入(inject)的 SessionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com