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

在wicket中测试抽象页面类

卢光远
2023-03-14

我从Wicket开始,正在做TDD(当然是使用WicketTester)
我在尝试使用标记继承创建公共布局时遇到了一个问题
我查看了包括这一个在内的在线示例。然而,这些示例没有提到如何测试父类。

问题是父类是抽象的。这意味着,WicketTester无法实例化页面,它会抛出一个异常(这是理所当然的)
我曾想过使用mock或fake类将该类作为常规POJO进行测试,但之后我将无法测试抽象父类中的wicket组件
我考虑的另一个解决方案(直到我看到API…)was将提供一个定制的IPageProvider,它将实例化一个假类/mock,而不是引发异常。然而,API似乎不应该只为一个单元测试而实现。

同时,我将父类创建为一个具体的类,并像其他任何页面类一样,使用WicketTester对其进行测试。然而,这些示例具体演示了标记继承,并为父页面提供了一个抽象类,从设计角度来看,这似乎是正确的做法。

有什么建议吗?

共有2个答案

南宫泓
2023-03-14

您应该能够创建抽象父类的测试子类,并使用WicketTester对其进行测试。

我在类似的情况下也这样做过,并且在验证抽象父类组件的呈现和交互时没有问题。

宋健柏
2023-03-14

您可以在测试期间创建一个匿名子类实例。

WicketTester w = new WicketTester();
w.startPage( new AbstractPage() {} );

当然,您应该实现所有必要的抽象方法。此外,AbstractPage应该有自己的html(良好的实践)。

 类似资料:
  • 问题内容: 我正在寻找在抽象基类中定义的测试方法的方法/最佳实践。我可以直接想到的一件事是对基类的所有具体子类执行测试,但这有时显得有些多余。 考虑以下示例: 是否可以在不进行任何子类化的情况下进行测试? 问题答案: 正如lunaryon所说,这是不可能的。包含抽象方法的ABC的真正目的是,它们不能像声明的那样实例化。 但是,可以创建一个对ABC进行内省的实用函数,并动态创建一个虚拟的非抽象类。可

  • 问题内容: 我是第一次使用JUnit进行Java测试。我必须使用Java,并且想使用单元测试。 我的问题是:我有一个带有一些抽象方法的抽象类。但是有些方法不是抽象的。如何使用JUnit测试此类?示例代码(非常简单): 我要测试并运行。 在“JUnit常见问题解答”部分中,我找到了此链接,但我不理解作者想在此示例中说些什么。这行代码是什么意思? 问题答案: 如果您没有该类的具体实现,并且方法不是测试

  • 当我宣布“抽象公共无效显示();”在抽象类测试中,这是创建一个全新的show()方法,还是只引用Inter接口中声明的show()方法?请澄清。

  • 问题内容: 我想测试一个抽象类。当然,我可以手动编写一个从类继承的模拟。 我可以使用模拟框架(我正在使用Mockito)来执行此操作,而不是手工制作模拟吗?怎么样? 问题答案: 以下建议让你在不创建“真实”子类的情况下测试抽象类-Mock 是子类。 使用,然后模拟所有被调用的抽象方法。 例: 注意:此方法的好处是,你不具备实现的抽象方法,只要他们永远不会被调用。 在我看来,这比使用间谍更整洁,因为

  • 这次的页面测试就没啥难度了吧, 先强制登出 http://192.168.72.102:8080/nutzbook/user/logout 因为UserModule里面的logout方法已经删除,如果出现404,也只是shiro配置的问题了 一如既往,登陆, 成功后跳转到用户详情页 http://192.168.72.102:8080/nutzbook/user/login 访问用户列表页,

  • 一切就绪,请再仔细检查一下本章的修改,然后启动Tomcat, 首先的输出的日志将会发生变化 [INFO ] 20:33:09.574 org.apache.shiro.web.env.EnvironmentLoader.initEnvironment(EnvironmentLoader.java:128) - Starting Shiro environment initialization. [