当前位置: 首页 > 知识库问答 >
问题:

模拟UserContext和FacesContext-jUnit

徐德海
2023-03-14

我试图编写一些基本的backingBean测试,但我一直在模仿UserContext和facesContext。

此代码在我尝试测试的代码中:

UserContext uc = ContextProvider.getContext();
Locale locale = uc.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("AppMessages", locale);
String message = bundle.getString("this.is.the.message.key");

在另一段代码中,我得到了以下内容:

FacesContext fc = FacesContext.getCurrentInstance();
fc.getExternalContext().redirect(handleRedirect("someString"));

如何在标准jUnit测试中仅使用mockito来模拟这些?还是必须使用PowerMock之类的工具?

共有2个答案

宗冠宇
2023-03-14

相反,您可以使用Apache MyFaces测试为自己创建模拟,该测试为JSF工件提供了已经准备好的模拟对象。它将在更广泛的情况下更好地发挥作用,只需更少的努力。

朱宏爽
2023-03-14

Mockito无法模拟静态方法。不过,您有几个选择:

  • 将测试中的代码提取到将用户上下文和资源束或FacesContext实例作为参数的方法
  • 将静态方法调用封装在工厂对象中,并将工厂对象实例作为参数传递给测试中的代码
  • PowerMock是一种选择,但会减慢测试执行速度,在我看来,它允许错误的实践解决方案
 类似资料:
  • 我在Eclipse中有两个web项目:Framework和webxxx 在我的框架中,我有一些函数,如复制、下载、上传等。 当我从调用download方法时,得到了 Web xxx项目依赖项: 框架依赖关系:

  • 在安装到AEM 5.6.1实例之前,我正在使用maven构建和测试我的代码。我已经编写了单元测试,这些测试使用wcm的实现从aem模拟中获益。io和其他需要使用powermockito模拟静态方法的单元测试。 以下是我对aem上下文、sling Mock和powermock的maven依赖关系。 在我的课堂上,我正在为aem上下文设置规则,并准备一些用于模拟的静态类: 当我通过命令行运行mvn测试

  • 问题内容: 由于外部库不公开接口(因此不是可模拟的),而仅公开纯函数,因此我很难在Go中编写单元测试。即使像Google这样的大公司也没有,所以我想知道我的方法是否足够好。库不是提供s而不是仅提供函数的包以便用户模拟它们的好习惯吗? 到目前为止,我想到的解决方案是将这些程序包与接口的实现包装在一起,但这似乎工作量太大。 我举一个例子。我的功能可能看起来像这样 其中session是一个导入的包,返回

  • 我想在购买android设备之前使用Unity/C#测试ARCore--我是否可以在没有设备的情况下使用Unity和ARCore模拟器来组装AR应用程序,而只使用PC上的相机,相机是否需要特定的规格? 谢谢你的帮助! 塞尔吉奥

  • Spring Cloud Contract提供了一个方便的类,可以将JSON WireMock存根加载到Spring MockRestServiceServer中。以下是一个例子: @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) public class WiremockForDo

  • 在前几节基于Fashion-MNIST数据集的实验中,我们评价了机器学习模型在训练数据集和测试数据集上的表现。如果你改变过实验中的模型结构或者超参数,你也许发现了:当模型在训练数据集上更准确时,它在测试数据集上却不一定更准确。这是为什么呢? 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,