问题标签 [testcasesource]

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 投票
1 回答
1264 浏览

nunit - 在 NUnit 中延迟加载 TestCaseSource

我有一些使用 TestCaseSource 函数的 NUnit 测试。不幸的是,我需要的 TestCaseSource 函数需要很长时间来初始化,因为它递归地扫描文件夹树以查找将传递给测试函数的所有测试图像。(或者,它可以在每次运行时从文件列表 XML 加载,但仍然需要自动发现新的图像文件。)

是否可以将 NUnit 属性与 TestCaseSource 一起指定,以便 NUnit 在用户单击节点或运行测试套件之前不会枚举测试用例(不调用 TestCaseSource 函数)?

需要将所有测试图像存储在一个文件夹中是一个项目要求,因为无权访问测试项目的其他人将需要将新的测试图像添加到该文件夹​​中,而无需修改测试项目的源代码。然后他们将能够查看测试结果。

一些教条式的单元测试人员可能会反驳说我正在使用 NUnit 来做它不应该做的事情。我不得不承认我必须满足一个要求,而 NUnit 是一个很棒的工具,它的 GUI 可以满足我的大部分要求,所以我不在乎它是否是正确的单元测试。

附加信息(来自 NUnit 文档)

对象构造注意事项

NUnit 在加载测试时定位测试用例,使用非静态源创建每个类的实例,并构建要执行的测试列表。每个源对象此时只创建一次,并在加载所有测试后销毁。

如果数据源在测试夹具本身中,则使用为 TestFixtureAttribute 上提供的夹具参数的适当构造函数创建对象,如果未指定参数,则使用默认构造函数创建对象。由于此对象在测试运行之前被销毁,因此这两个阶段之间或不同运行之间无法进行通信,除非通过参数本身。

似乎预先加载测试用例的目的是避免在 TestCaseSource 和测试执行之间发生通信(或副作用)。这是真的?这是要求预先加载测试用例的唯一原因吗?

笔记:

需要对 NUnit 进行修改,如http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html中所述

有计划将此选项引入到 NUnit 的更高版本。

0 投票
3 回答
3413 浏览

nunit - NUnit 测试用例源,数据重构为另一个类

我正在使用带有 TestCaseSource 属性的 NUnit 对动态数据进行数据驱动测试,方法与NUnit TestCaseSource 将值传递给工厂如何将动态对象传递给 NUnit TestCase 函数的方法相同?

在每种情况下,他们都使用 IEnumerable <TestCaseData> 来指定数据。从这里的 NUnit 文档http://nunit.org/index.php?p=testCaseSource&r=2.5看来,这需要是与 TestCase 相同的类的静态或实例成员。

我想将其重构为另一个类,因为我想使用相同的 TestCaseSource 属性。有谁知道这是否可能?

0 投票
1 回答
759 浏览

c# - NUnit 测试用例生成:如何创建子文件夹(层次结构)?

我正在根据文件名生成 NUnit 测试用例。

该目录如下所示:

我正在使用 TestCaseSource:

如何在生成的测试用例中引入层次结构?我需要根据文件夹结构将它们组织成组,所以我可以勾选“帐户”并选择所有帐户测试用例。

0 投票
2 回答
1274 浏览

testing - 当用户界面不断变化时,如何调整 selenium 中的测试脚本?

我们最近遇到了一个问题。我们的团队使用 selenium 进行了自动化测试脚本。现在我们在用户界面中收到了更改请求,所以我们修改了 css。

问题是自动化测试脚本不起作用。我们知道这是由于 css 的变化。

我的问题是:

有效处理这些情况的最佳方法是什么?

0 投票
3 回答
8494 浏览

c# - NUnit 测试用例源

我正在使用 TestCaseSource 属性。一个问题:当 sourceName 字符串无效时,测试会被忽略而不是失败。如果源方法被重命名,sourceName 字符串没有得到更新,那么这将是非常糟糕的,然后你失去了测试提供的覆盖率。有没有办法改变 NUnit 的行为,以便在 sourceName 无效时测试失败?

0 投票
1 回答
188 浏览

nunit - 为什么我的测试方法没有执行?

我有一个相当复杂的集成测试,每个不同的测试用例都需要大量数据。

我的测试用例类如下:

我的测试方法的标题是:

当我运行测试时,它返回不确定。当我单步执行代码时,我发现正在访问 MatchingCases 属性 getter,并且 yield return 语句在没有问题的情况下执行,但是没有调用测试方法本身——或者更确切地说,是不可预测的。

看,我已经写过一次这个问题,然后我尝试将测试类移出 testfixture 范围。当我这样做时,代码执行了一次,所以我放弃了我的问题。然后它停止执行了......

为什么我的测试方法没有被调用?

编辑:预测问题 - 这些是正在使用的支持类:

更新 - 第二天

关闭并重新加载 Visual Studio,并在不进行任何更改的情况下重新运行测试后,测试代码会重复执行。我开始怀疑这是一个暂时的故障。

0 投票
2 回答
3430 浏览

c# - N-Unit 中的 TestCaseSource

我正在编写一些 N 单元测试,但遇到了一些困难。我正在尝试将测试连接到TestCaseSource我的代码中的 a,但它似乎没有正确构造对象。

这是我的测试方法:

我的TestCaseSource

这主要用作概念证明,因此当需要编写具有复杂对象的实际测试时,我会知道我可以像上面那样编写一个循环并将随机值放入我的对象中。但是,返回给我的测试方法的每个实例TestCaseStuff都是相同的。

更新:

下面的答案是正确的。当我将它传递给 N-UnitsTestCaseData对象时,我假设(错误地)它只会按值传递该实例。显然,它是通过引用完成的,这就是为什么值总是相同的。

最重要的是,我Random错误地使用了这个类。这不是我通常处理的事情,但我没有正确阅读它。正如下面链接中所解释的,当使用Random它的默认构造函数时,种子值是从系统时钟派生的。因此,如果您Random快速连续实例化多个对象,它们将共享相同的默认种子值并产生相同的值。

因此,由于这些发展,我的代码现在变为:

0 投票
1 回答
422 浏览

android - 已经可用的 Android 测试用例

是否有任何可用于 android junit 的开源测试用例代码。比如,Android 媒体播放器、内容提供商等的测试用例?我通过谷歌搜索并找不到相关链接。我现在正在使用我的测试用例进行测试,但我想知道测试用例是否已经可用。计划重复使用这些。

0 投票
1 回答
2131 浏览

testing - SpecFlow - 如何使用 NUnits TestCaseSource 属性等数据驱动测试?

我是一名 QA,经过一番考虑后决定使用SpecFlow进行测试自动化。我认为它很棒,但是缺少一个我经常与其他测试运行程序(例如 NUnit)一起使用的功能 - 类似于 NUnit 中的TestCaseSource属性,用于为要在运行时运行的测试指定一组潜在的动态数据。

在测试应该运行的每个环境中,我经常会有不同的数据,因此无法为测试参数指定硬编码值。一个简单的例子是检查每种类型的用户帐户是否能够登录,可以使用 DB 查询检索用户帐户凭据以在 NUnit 中动态填充每个测试用例:

显然,这是该功能的一个简单示例,但我认为它描述得足够好。我知道我们有能力在 SpecFlow 中使用场景大纲和测试运行输入数据表,但这仍然是静态的,因此不符合要求。

我已经找了一段时间了,还没有在 SpecFlow 中找到像这样的任何东西,有没有人知道可以使用与上述类似的任何东西(或者如果从事该项目的任何人读到这个,则计划使用)?

谢谢 :)

0 投票
1 回答
8365 浏览

nunit - 使用 nunit 和 TestCaseSource 和 TestCaseData 设置复杂的行测试

对于像 2 或 4 这样的每个期望返回值,我想将此值作为单元测试方法的参数传递。但我得到一个例外,即参数不正确。当我删除 countExpected 参数时,单元测试运行良好,我无法断言 countExpected ...

NUnit 完全可以实现这种情况吗?