gpt4 book ai didi

java - gwt-log 和 gwt-test-utils 不能一起玩

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

我有一个项目,其中散布着 gwt-log 日志记录行。现在我正在尝试编写一些单元测试,但似乎没有任何效果。

我测试的任何使用 gwt-log 工具的类都会引发以下异常:

Caused by: com.googlecode.gwt.test.exceptions.GwtTestConfigurationException: 
A custom Generator should be used to instanciate
'com.allen_sauer.gwt.log.client.LogMessageFormatter',
but gwt-test-utils does not support GWT compiler API,
so you have to add our own GwtCreateHandler with
'GwtTest.addGwtCreateHandler(..)' method or to declare your
tested object with @Mock

我不需要记录器在单元测试期间运行,我宁愿模拟它。我尝试使用 Mockito 以几种不同的方式模拟记录器......显然我不知道我在这里做什么,以下代码片段都没有帮助这种情况:

public class ClockTest extends GwtTest {
@Mock private LogMessageFormatter lmf;
...

...
@Before
public void init() throws Exception {
LogMessageFormatter lmf = mock(LogMessageFormatter.class);
...

任何有关如何解决此问题的线索都将不胜感激!

最佳答案

Colin 是对的,你有两种方法来处理你的错误:

1) 模拟 LogMessageFormatter,或在更高级别模拟您的 Logger 实例。 gwt-test-utils 提供了一个简单的 API,用于使用 Mockito 或 EasyMock 进行模拟:http://code.google.com/p/gwt-test-utils/wiki/MockingClasses

2) 提供您自己的 GwtCreateHandler 来实例化 LogMessageFormatter,或者提供您自己的 Logger 实例。在内部,gwt-log 依赖于 GWT 的延迟绑定(bind)来根据您的配置实例化一个 LogMessageFormatter 对象,该对象在编译时解析。它使用 GWT 的生成器 API 来创建 LogMessageFormatter 类,但 gwt-test-utils 无法使用这些类型的生成器。您必须使用 gwt-test-utils 延迟绑定(bind)支持“手动”完成:GwtCreateHandlers。 您的“LoggerGwtCreateHandler”可以使用 JDK 的 InvocationHandler 和 Proxy 类为 Logger 接口(interface)编写代理,这将简单地静默每个方法调用,因为我猜您不会关心测试中的任何日志调用。

这是关于如何编写 GwtCreateHandler 的讨论:https://groups.google.com/forum/?fromgroups#!topic/gwt-test-utils-users/r_cbPsw9nIE

关于java - gwt-log 和 gwt-test-utils 不能一起玩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241689/

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