问题标签 [nunit-3.0]
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.
c# - NUnit 3:禁止测试并行运行
我安装了最新的 NUnit(3.2.0),并且我的所有测试都并行运行。它可能看起来像可取的行为,但我没有要求它,实际上它破坏了我的一些测试。我有一些与[OneTimeSetUp]
线程相关的初始化,似乎我无法强制 NUnit 按顺序运行我的测试。我已经阅读了文档,它指出默认情况下测试不是并行运行的,但实际上它们是并行运行的!
此外,我尝试添加以下属性:[assembly: Parallelizable(ParallelScope.None)]
- 不走运。
有谁知道如何改变这种行为?
PS 我使用 ReSharper 运行它,但也尝试使用 MSVS 插件。
UPD:我正在使用 MVVM Light DispatcherHelper.Initialize()
(inside [OneTimeSetUp]
) 来存储调度程序对象,该对象后来被几个测试使用。如果线程不同(在测试和设置方法之间),那么被测试的操作会异步执行,我的测试会失败。
我在不同的测试中检查了线程 ID,它们都是不同的。
UPD2:文档摘录:
NUnit 3.0 框架可以在程序集中并行运行测试。这是与引擎并行测试执行完全分开的工具,尽管可以在同一测试运行中使用两者。
默认情况下,不会发生并行执行。属性用于指示哪些测试可以并行运行以及它们与其他测试的关系。
如果这并不意味着程序集中的测试在明确指定之前不应该并行运行,那么这意味着什么?为什么[assembly: Parallelizable(ParallelScope.None)]
对测试并行执行没有影响?
UPD3:
可能会在下面找到问题的答案,但如果您(就像我一样)被困住了,DispatcherHelper.Initialize()
您只需从 中删除此初始化OneTimeSetUp
并将以下几行放入使用调度程序的每个测试中:
nunit - NUnit 3.2:编译后自动运行测试(Windows)
在一个新的 VS 解决方案上,我已经开始使用 NUnit 3.2。旧版本 (2.6) 有一个外部 NUnit GUI,这使得可以观察程序集并自动运行修改测试。但是我在 3.2 中找不到与此类似的任何东西——无论是在文档中还是通过 Google。
我已经安装了 NUnit.3.2.0.msi,我还在我的项目的 VS + NUnit3.2 nuget 包中安装了 NUnit3 测试适配器。
我可以通过 VS 的测试资源管理器轻松运行所有测试。但我想念一些自动运行它们的方法。有谁知道怎么做?
c# - NUnit 3.2.0 Console Runner System.NullReferenceException 与 /domain=multiple 一起运行时
在 NUnit Console Runner 中使用/domain=multiple运行时,会发生 NullReference 异常。
在没有 /domain=multiple 或 /domain=single 的情况下运行。使用 ReSharper 10.0.2 测试运行程序运行并选中“使用单独的 AppDomain”设置可以按照我想要的方式运行,并并行运行测试程序集。
我希望能够使用控制台运行器从多个程序集并行运行参数化测试。由于这需要并行加载静态资产,因此测试需要在多个 AppDomain 中运行。
我创建了一个简单的单元测试解决方案来重现该问题。有两个项目。每个都有一个测试类,如下所示:
以下是控制台结果:
nunit - NUnit 3.2 TestSourceCase TargetParameterCountException
我正在尝试从 NUnit 2 升级到 NUnit 3。
我构建了一个 Data-Driven-Helper 来从几种类型的数据文件中读取测试用例数据。
我发现可以传递参数的 NUnit 3.2 的 TestCaseSource 可以帮助改进我的 Data-Driven-Helper,但是,问题是它一直告诉我“消息:System.Reflection.TargetParameterCountException:参数计数不匹配。”
以下是测试代码:
c# - NUnit 3 测试不使用测试用例源中的参数
我正在尝试使用 NUnit 3 编写一个测试,该测试采用 double[] 列表并测试扩展方法的返回。但我无法让测试将 testcasedata 作为参数。它总是使用空参数运行一次。
我几乎完全复制了wiki中的示例,所以我不确定我哪里出错了。我来自 nunit 2.6,所以不习惯新的做事方式。所以这可能是非常明显的事情。
任何帮助表示赞赏。
travis-ci - Travis CI 无法运行 NUnit 3 Console Runner
我使用 Travis CI 设置了远程构建。这是我的配置文件:
但是,当它运行时,我得到以下异常:
对于我尝试加载以进行测试的每个 DLL,都会重复此异常。根据Travis CI 的文档,我应该能够在路径中使用通配符并且它工作正常。但是,要么是这导致了问题,要么是其他一些问题阻止了 Travis 看到它刚刚安装的 exe。有谁知道解决这个问题?我真的不想硬编码 NUnit 的一个版本——我想尽可能使用最新的版本。
更新硬编码版本没有帮助 - 设置为 3.2.0,我仍然得到同样的错误:
产生这个:
c# - Mono 上的 NUnit 和任务并行库冲突
在 Mono 上结合 NUnit 和 TPL 时,我遇到了奇怪的崩溃。这是代码:
我添加了以下 NuGet 包:
因此,如果我在 Windows 10 (.NET 4.6.1) 上运行此代码,程序会打印“Mono is bad”。没有崩溃。
我在 Visual Studio 2015 中编译,然后使用单声道在 Linux 上进行测试。如果我在 Linux (OpenSUSE 13.2) 上运行它,我会得到这个堆栈跟踪:
这是我正在使用的 Mono 版本:
奇怪的修复 #1 如果我注释掉以下行,程序在 Linux/mono 上运行良好:
奇怪的修复 #2
现在假设我将代码保持原样(_filterService
未注释该行)。如果我删除工作目录中的单个 .dll 文件,我不会崩溃。让我给你看原始文件:
现在,如果我删除System.Threading.Tasks.Dataflow.dll
,程序又可以正常工作了。Windows 不会出现此问题,并且在我描述的任何情况下都可以正常工作;只有单声道/Linux 有问题。
这对我来说真的很奇怪,因为在这个示例代码中我什至没有真正调用任何 Tasks.Dataflow (TPL) 东西。有人可以解释一下这里发生了什么吗?
c# - 如何在每次 NUnit 测试后运行方法(甚至在拆卸中失败)
我正在使用 NUnit 开发测试库,并在测试运行时生成自定义报告。
在TearDown
我的测试中,我调用了一个报告测试结果的方法。如果测试通过,它就可以正常工作,但如果测试失败、被忽略或不确定,则永远无法达到。
为了让事情变得更加困难,“//do stuff”中的“//do stuff”TearDown
也可能导致测试失败,在这种情况下仍然需要记录它。但是Assert
会引发异常,这意味着它会离开块并且永远不会到达报告代码。
更多信息 - 使用 NUnit 3.2.0
c# - NUnit 3.0 是否有 nunit-console-runner.dll?
NUnit 2.6.4 有一个 nunit-console-runner.dll 文件,我可以在我的 C# 应用程序中使用它,如下所示:
但我在 3.0 中没有看到这个 dll。有吗?如果没有,我如何使用相同的命令以编程方式运行 NUnit 测试?
c# - 从控制台运行器的多个程序集并行运行 NUnit3 测试
我希望能够使用 NUnit 3 控制台运行器从多个程序集并行运行参数化测试。关键是我希望能够并行运行静态初始化程序(测试的缓慢部分)。
我可以使用 VisualStudio 中的 ReSharper 10 测试运行程序来完成这项工作。当我在 NUnit 3 控制台运行器中运行相同的项目时,静态初始化程序不会并行运行。
我创建了一个简单的单元测试解决方案来重现该问题。有两个项目。每个项目都有一个类似于下面的类的测试类。我添加了日志记录以表明测试不会从控制台运行器并行运行。
控制台运行器结果: