Java 未提供属性的Wicket TagTester

Java 未提供属性的Wicket TagTester,java,html,unit-testing,junit,wicket,Java,Html,Unit Testing,Junit,Wicket,我有一个组件,它是表的dataview,其标记如下所示: <table> <thead> <tr> <td wicket:id="dateTime">Date/Time</td> <td wicket:id="direction">Direction</td> <td wicket:id="ring">Ring<

我有一个组件,它是表的dataview,其标记如下所示:

<table>
    <thead>
    <tr>
        <td wicket:id="dateTime">Date/Time</td>
        <td wicket:id="direction">Direction</td>          
        <td wicket:id="ring">Ring</td>
        <td wicket:id="wait">Wait</td>
        <td wicket:id="talk">Talk</td>
        <td wicket:id="duration">Duration</td>
        <td wicket:id="answer">Answer</td>
    </tr>
    </thead>
    <tbody>
    <tr wicket:id="callList">
        <td wicket:id="dateTime">Date/Time</td>
        <td wicket:id="direction">Direction</td>
        <td wicket:id="ring">Ring</td>
        <td wicket:id="wait">Wait</td>
        <td wicket:id="talk">Talk</td>
        <td wicket:id="duration">Duration</td>
        <td wicket:id="answer">Answered</td>
    </tr>
    </tbody>
</table>

日期/时间
方向
戒指
等待
说话
期间
答复
日期/时间
方向
戒指
等待
说话
期间
回答
我通过控制可见性使一些列变为变量,以便渲染结果不包含它们。我通过
DataView
而不是
DataTable
实现了这一点,因为这样可以更好地控制html文件中的html,而不是代码,这是我喜欢的方式

问题出现在我尝试测试可见性时。我觉得获取每个组件并测试其可见性对于单元测试来说有点侵入性,我只想测试一行中呈现的单元格数量,看看它是否与我期望的数量匹配(首先)

我遇到了一个问题,这似乎是一个很好的解决办法,我正试图做什么


然而,TagTester似乎通过一个属性及其值来识别标签,并且我的单元格中没有一个可以识别标签的公共属性。是否可以创建一个只知道标签是什么的TagTester?或者我在考虑对这样一个组件进行单元测试时一般是错的吗?

TagTester
有一个open标记、一个close标记和一个解析器。因此,当您为您的示例创建TagTester时,您将拥有:open tag=
和close tag=
。当前TagTester允许您:

  • hasChildTag(字符串标记名)
    :用于按名称搜索标记
  • getChild(字符串属性,字符串值)
    :用于获取属性等于值的第一个
    TagTester
    子级

  • 如果您想在标记中获取
    标记
    ,可以通过在标记中搜索自己来实现。getMarkup()返回
    字符串

    ,这就是问题所在;如何通过只知道标签来创建标签测试仪?TagTester上的静态方法不提供此类功能;他们要求你知道一个属性及其值。我还没有开始使用它,这将是我的第一次尝试。我希望构建它的唯一方法是您可以实现自己的TagFinder。你能告诉我你是如何制作TagTester的吗?用BaseWicketTester?为什么要按标签搜索?你能给我一个使用的例子吗?请看我的原始问题,为什么我需要通过标签获得TagTester。我还没有构建任何TagTester,我正在寻找一种在不知道属性的情况下构建它们的方法,这就是TagTester静态方法如何让您做到的。另外,从WicketTester构建TagTester的方法似乎需要wicket ID,正如您在问题中看到的,它对于我想要获得的所有标记都是不同的它返回一个
    列表
    ,您只需迭代并执行
    tagTester.getName()