问题标签 [parameterized-tests]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
339 浏览

nunit - 有什么方法可以访问当前测试的参数(除了参数本身)?

如果我编写一个参数化的 NUnit 测试,使用类似[TestCaseSource]or的东西[ValueSource],NUnit 会将参数直接传递给我的测试方法。但是有没有其他方法可以访问这些参数,例如 fromSetUp或从辅助方法(无需显式地将参数值传递给该辅助方法)?

例如,假设我有三种不同的情况(可能是“上升利率”、“下降利率”和“恒定利率”)。我正在为特定计算编写测试,一些测试在所有三种情况下都会有相同的行为;三个中的两个(我将为另一个场景编写第二个测试);其他人将对每种情况进行单独的测试。参数化测试似乎是对此建模的好方法;我可以为每个场景编写一个策略对象,并根据每个测试应该应用于哪些场景来参数化测试。

我可以做这样的事情:

这样做的缺点是我需要记住InitializeScenario每次测试都要调用。这很容易搞砸,而且它也使测试更难阅读——除了确切说明该测试适用于哪些场景的属性之外,我还需要一行额外的代码来混淆我的测试,说哦是的,有情景。

还有其他方法可以访问测试参数吗?是否有一个类似于 on 的静态属性,TestContext可以让我从我的SetUp方法中访问测试的参数,这样我就可以使我的测试更具声明性(基于约定)并且更少重复?

(TestContext看起来很有希望,但它只告诉我测试的名称以及它是通过还是失败。测试的参数在那里,但只是作为显示字符串的一部分,而不是实际对象;我无法获取策略对象和开始调用它的方法。)

0 投票
1 回答
2145 浏览

eclipse - Eclipse 中的参数化 Groovy JUnit 测试用例

Parameterized在 Eclipse 中运行 Groovy JUnit 测试用例时遇到问题(请参阅下面的测试代码和环境详细信息)。

症状

  • 右键单击包资源管理器中的类并执行Run As -> JUnit Test Case只会弹出一个对话框,声称“未找到 JUnit 测试”。
  • 右键单击项目并执行Run As -> JUnit Test Case运行参数化 Groovy 之外的所有测试用例。

我尝试过的事情

  1. 确保“正常”的 Groovy JUnit 测试用例运行。 这行得通。
  2. 确保参数化的 Java 测试用例运行。 这行得通。
  3. 为此测试用例手动创建 JUnit 运行配置。 这行得通。

所以

所以我有一个不方便的解决方法(3)。但这不可扩展,因为当我在项目中运行所有测试用例时,仍然不会包含这个测试用例。

有什么想法可以让 Eclipse/Groovy 插件/JUnit 自动识别我的测试用例吗?


测试用例代码

环境

  • Eclipse Juno 服务版本 2 (OSX)
  • Groovy-Eclipse 2.8.0
  • JUnit 4.10.0

0 投票
4 回答
6265 浏览

java - 强制 JUnit 子类测试覆盖 @BeforeClass 方法

我有一个轻量级测试框架,编写为 JUnit Abstract 测试。我想做的是让每个实现子类定义他们的自定义测试类设置。我的计划是让抽象超类定义一个@BeforeClass调用抽象设置方法的方法,每个子类都将被强制定义,但这失败了,因为@BeforeClass方法必须是静态的,静态方法不能抽象,也不能调用实例方法。

我可以假设子类将通过在文档中包含所需的内容或通过抛出 来进行设置IllegalStateException,但出于多种原因,我真的希望能够在接口级别强制执行此操作。谁能想到解决这个问题?

顺便说一句,我在将这些测试参数化时遇到了同样的问题(子类定义了参数,但带@Parameters注释的方法必须是静态的)。我通过使用允许方法级参数的第 3 方 JUnitParams 运行程序来解决这个问题。在这里查看:https ://github.com/Pragmatists/JUnitParams

0 投票
1 回答
7725 浏览

python - pytest parameterize - 来自 CSV 的行作为测试用例

我必须读取一个 CSV 文件,并且对于每一行中的每个组合都需要运行一些方法。我希望将每一行视为一个测试用例。是否可以将行作为参数发送 - pytest 参数化我的测试用例?你能给我一些关于如何做到这一点的想法吗?

这是伪代码:

我曾尝试阅读pytest文档,但对我来说并不清楚。

这是我使用 generate_tests hook for row 作为参数所做的事情。我想知道如何对内部 for 循环函数做同样的事情 - 这个内部循环也应该作为测试用例收集

现在,我需要为调用 test_method2 的 -for 循环生成报告(它是 csv 文件每一行中列中元素列表的参数化方法)。Pytest 也需要收集这些作为测试用例。

感谢您的帮助。谢谢

0 投票
1 回答
145 浏览

unit-testing - JUnit / TestNG 在所有具有相同参数的测试之前执行@BeforeXXX 方法

我有以下问题:

我有一个参数化测试

  • 它有一个参数列表
  • 它有几种测试方法
  • 测试方法需要为每个参数设置

更详细:

  • 对于列表中的每个文件 [...]
  • 将文件解析为 db 中的多个表 - [setUp]
  • 从表中读取数据 - [setUp]
  • 并在单独的测试中从每个表中测试数据 - [测试]

我想按这样的顺序执行 setUp 方法和测试

  1. 初始化参数

  2. 对于第一个参数

    • 使用第一个参数执行 setUp 方法
    • 使用第一个参数执行所有测试方法
  3. 对于第二个参数
    • 使用第二个参数执行 setUp 方法
    • 使用第二个参数执行所有测试方法
  4. ...

我尝试使用 JUnit 和 TestNG 来执行此操作,但没有找到解决方案。我想知道是否有人知道该怎么做。

我在 JUnit 中找到了解决此问题的方法 - 将 setUp 和所有测试放在一个测试方法中,并使用 ErrorCollector 确保将执行所有检查。但我不喜欢它,因为这种方式报告不太清楚。

0 投票
1 回答
297 浏览

java - 具有不同参数的 JUnit 参数化测试

考虑一个参数化的 JUnit 测试。JUnit 提供了一种使用静态方法参数化此类测试的方法:

但是,这不是我需要的,因为我不知道测试类本身的参数。测试类应该只是一个可以用一组参数参数化的测试类。我不想在类本身中指定此类参数。考虑一下我在测试套件中有很多这样的类。

我希望能够从外部代码参数化整个测试套件。即,有一些其他代码可以用一组特定的参数来实例化套件。套件本身不知道将使用哪些参数对其进行参数化。

例如,我有一个由测试类、和X组成的测试套件。所有这些类都在其构造函数中使用例如字符串和整数作为参数。现在我希望能够使用特定的 String和 int在外部(例如,在另一个测试套件中)实例化,以便它将实例化并在它们的构造函数中使用和。ABCXsiA BCsi

如何做到这一点?

0 投票
2 回答
3306 浏览

selenium-webdriver - 如何使用 NodeJS - Protractor 读取/写入 excel?

可能是一个基本问题。但由于我是量角器的新手,我肯定需要一些帮助!

如何使用 NodeJS - Protractor 读取/写入 excel?

有人可以举例说明吗?

我的意图是在 Excel 的帮助下使用 NodeJS - Protractor 参数化我的脚本。

0 投票
1 回答
4465 浏览

java - 将字符串值列表传递给参数化的 JUnit 测试

我正在尝试将属性文件中的字符串值集合传递给参数化的 JUnit 测试。Properties.values() 返回 Collection 而 JUnit 需要在 Collection 结构中传递参数。

这是否意味着我必须转换Collection<Object> to Collection<Object[]>,每个数组实际上是一个项目?

我试过这个:

但这会将所有值放在一个对象中,并且不会像我期望的那样创建一个集合。有人可以帮忙吗?

0 投票
2 回答
1398 浏览

f# - f# 中的参数化测试 - 这不是有效的常量表达式

由于某种原因,当通过TestCaseattrubute 将参数传递给测试时,我收到以下关于第一个参数的错误消息,在本例中是一个数组:

这不是有效的常量表达式或自定义属性值

但是,当从属性和方法本身中删除最后一个参数时,一切正常。

我究竟做错了什么?最好我也会定义一个元组,int * int但它似乎也不起作用。

0 投票
2 回答
3536 浏览

java - 如何在春季启动启动器测试中应用两个@RunWith

我正在使用 spring boot 启动器测试来编写 JUnit 测试用例。我很想使用 JunitParamrunner,它有助于为参数化测试传递文件。基本上它从文件中逐行读取数据,并且每行调用一个测试用例。问题是同时使用我需要通过 @RunWith 和 SpringJUnit4ClassRunner 以及 JUnitParamsRunner。我不知道该怎么做。任何人都可以提供一些线索。