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

用空隙法进行参数化试验

党祖鹤
2023-03-14

我不明白如何用spock为void方法设置参数化测试。这是我对链表的简单测试用例:

@Unroll
def "should delete the element #key and set the list size to #listSize"(key, listSize) {
    given:
    list.insert(6)
    list.insert(12)
    list.insert(33)

    expect:
    def deletedKey = list.delete(key)
    list.size() == listSize

    where:
    key || listSize
    6   || 2
    12  || 2
    33  || 2
    99  || 3
}

方法delete()是一个void方法,但是如果我没有显式地获得返回值,那么测试就失败了。

这实际上是有效的:

expect:
def deletedKey = list.delete(key)
list.size() == listSize

但这不是:

expect:
list.delete(key)
list.size() == listSize

测试报告抱怨为空

Condition not satisfied:

list.delete(key)
|    |      |
|    null   12
com.github.carlomicieli.dst.LinkedList@5c533a2

我该如何处理这种情况?我想测试删除的结果,检查删除方法被调用后的列表状态。

谢谢,卡洛

共有1个答案

程招
2023-03-14

如果您使用whenthen而不是expect,这是否有效?

@Unroll
def "should delete the element #key and set the list size to #listSize"(key, listSize) {
    given:
    list.insert(6)
    list.insert(12)
    list.insert(33)

    when:
    list.delete(key)

    then:
    list.size() == listSize

    where:
    key || listSize
    6   || 2
    12  || 2
    33  || 2
    99  || 3
}
 类似资料:
  • 编辑 我还应该提到,和也是私有的。

  • 问题内容: 首先,对不起我的英语,它不是那么完美:) 因此,我面临以下问题:我正在尝试使用Selenium Grid和TestNg在不同的浏览器中运行并行测试,并在@BeforeTest方法中传递参数。我的问题是,在初始化每个测试时,似乎它们将使用最后一个测试的参数。因此,在此示例中,当我运行测试时,它将打开两个Chrome,而不是一个Firefox和一个Chrome。 (browser.getD

  • 问题内容: 这是从这个问题开始的:要求我在哪里开始一个新的问题。 问题是我只是对JUnit 或有关的东西之类的东西还不够了解,无法用Jeff Bowman提到的方式解决问题。 问题答案: 在您以后的评论中,我指出了差距:您需要使用Mockito作为规则,而将参数化为Runner,而不是相反。 原因是Runner负责报告测试数量,而Parameterized则根据测试方法的数量和参数化输入的数量来操

  • 问题内容: 我使用PyCharm已有一段时间,所以我不是专家。 我通常如何在终端上运行程序,如下所示: 我想知道如何调试它? 对于我编写的其他程序,我没有任何参数,因此调试只是设置断点并按debug。 问题答案: 菜单:-> -> -> 。 脚本名称: 如果您需要从已安装的软件包(例如)中调试脚本,则也可以指定完整路径。例如:脚本名称: 上面是包含程序包的虚拟环境的路径。 脚本参数:

  • 问题内容: 我有下面的代码(我包括了我认为所有相关的部分): 运行此命令时,在添加第一个参数时会收到IndexOutOfBoundsException。我做错了什么? 问题答案: 尝试以下方法:

  • 主要内容:1. 使用XML传递参数,2. 通过@DataProvider传递参数,3. @DataProvider + 方法,4. @DataProvider + ITestContextTestNG中的另一个有趣的功能是参数化测试。 在大多数情况下,您会遇到业务逻辑需要大量测试的场景。 参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。 TestNG可以通过两种不同的方式将参数直接传递给测试方法: 使用 使用数据提供者 在本教程中,我们将向您展示如何通过XML 或将参数传递给方法。