- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我安装了最新的 NUnit(3.2.0),并且所有测试都并行运行。它可能看起来像是理想的行为,但我并没有要求它,实际上它破坏了我的一些测试。我在 [OneTimeSetUp]
中进行了一些依赖于线程的初始化,似乎我无法做任何事情来强制 NUnit 按顺序运行我的测试。我读过 documentation它指出默认情况下测试不是并行运行的,但实际上它们是!
此外,我尝试添加以下属性:[assembly: Parallelizable(ParallelScope.None)]
— 没有成功。
有人知道如何改变这种行为吗?
附言我使用 ReSharper 运行它,但也尝试使用 MSVS 插件。
UPD:我正在使用 MVVM Light DispatcherHelper.Initialize()
(在[OneTimeSetUp]
内)来存储调度程序对象,它是后来被几个测试使用。如果线程不同(在测试和设置方法之间),则被测操作将异步执行,我的测试将失败。
我在不同的测试中检查了线程 ID,它们都是不同的。
UPD2:文档摘录:
The NUnit 3.0 framework can run tests in parallel within an assembly. This is a completely separate facility from Engine Parallel Test Execution, although it is possible to use both in the same test run.
By default, no parallel execution takes place. Attributes are used to indicate which tests may run in parallel and how they relate to other tests.
如果这并不意味着程序集内的测试在明确指定之前不应并行运行,那么它是什么意思?为什么 [assembly: Parallelizable(ParallelScope.None)]
对测试并行执行没有影响?
UPD3:问题的答案可能在下面找到,但如果您(像我一样)被 DispatcherHelper.Initialize()
困住了,您只需要从 OneTimeSetUp
中删除此初始化并在每个使用调度程序的测试中添加以下行:
DispatcherHelper.Reset();
DispatcherHelper.Initialize();
最佳答案
NUnit 不保证您的所有测试都将在同一线程上运行,因此观察到您的测试在不同线程上运行并不意味着它们是并行运行的。
文档仅说明测试将按顺序或并行运行。您可能会认为这意味着它们在同一线程上运行,但内部实现可能需要测试在不同线程上运行的原因有很多。超时是一个例子,如果测试超时,我们会产生一个线程并杀死它,但还有很多其他例子。
并行测试运行是 NUnit 3 的新功能,因此内部实现从 NUnit 2 更改。强制线程内的所有测试在同一线程上运行的属性可能很有用,因此请随时提交 enhancement request .
抱歉,我不熟悉 MVVM Light,所以我无法建议编码回 OneTimeSetup 线程的方法。
更新 - 由于这是 web 和异步的常见用法,NUnit 团队决定提供一个属性,要求测试在与 fixture 的 OneTimeSetup< 相同的线程上运行
。这将出现在下一个版本 3.4 或修补程序 3.2.1 版本中。如果您想跟踪进度,请参阅 issue和 pull request .
更新 2 - 您现在可以将 SingleThreadedAttribute
添加到 TestFixture 以向运行器指示 OneTimeSetUp
、OneTimeTearDown
和所有子测试必须在同一个线程上运行。
关于c# - NUnit 3 : Forbid tests to run in parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983016/
在 Oracle 中,PARALLEL 被广泛使用。提示 PARALLEL、PARALLEL(8) 和 PARALLEL(a,8) 有什么区别。如何选择最佳的查询提示? SELECT /*+ PARA
好的,我希望以前没有问过这个问题,因为在搜索中很难找到。 我查看了 F95 手册,但仍然觉得这很模糊: For the simple case of: DO i=0,99 END DO 我正
我有一个 C-shell 脚本,其中有一个名为 $hosts_string 的变量,格式为: host1,host2,...,hostN 我还有一个名为 $chrs_string 的变量,其形式为:
是否可以从由gnu parallel产生的脚本的多次运行中调用gnu parallel? 我有一个python脚本,可以运行100个顺序顺序迭代,并且在每次迭代中的某处,并行计算4个值(使用gnu p
我想在几个输入上运行几个长时间运行的进程。例如。: solver_a problem_1 solver_b problem_1 ... solver_b problem_18 solver_c pro
TParallel.&For 和 TParallel.For 之间有区别吗? 两者都可以在 Delphi 10 Seattle 中编译。那么我应该坚持哪一个呢? 最佳答案 TParallel.&For
我第一次使用 julia 进行并行计算.我有点头疼。所以假设我开始 julia如下:julia -p 4 .然后我为所有处理器声明 a 函数,然后将它与 pmap 一起使用还有@parallel fo
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我有一堆相互排斥的方法,因此可以并行运行。有这样做的好方法吗?到目前为止,我有以下两种实现方式,但我不确定是否应该选择其中一种。 使用 Parallel.For : Parallel.For(0, 2
我对并行运行脚本很感兴趣,并且我已经开始查看 GNU 并行工具,但是我遇到了一些麻烦。我的脚本 doSomething 有 3 个参数,我想在参数的不同值上并行运行脚本。我该怎么做? 我试过:para
我需要在多核(和多线程)机器上运行多个作业。我正在使用 GNU Parallel utility跨核心分配作业以加速任务。要执行的命令在名为“命令”的文件中可用。我使用以下命令运行 GNU Paral
我正在尝试使用如下两个输入运行 Python 脚本。我得到了大约 300 个这两个输入,所以我想知道是否有人可以建议如何并行运行它们。 单次运行看起来像: python stable.py KOG_1
每天我都必须更新一堆存储库,并在其中一些中执行另一个命令(来自 CARTON,Perl 模块依赖管理器)。我总是使用循环来执行此操作,但我想与 并行执行GNU 并行 如果可能,但我不太了解它的tuto
正如标题所说:@parallel 之间究竟有什么区别?和 pmap ?我的意思不是明显的一个是循环的宏,另一个适用于函数,我的意思是它们的实现究竟有什么不同,我应该如何使用这些知识在它们之间进行选择?
我有一些矩阵乘法运算。我想通过多个处理器并行执行这些操作。这可以使用 MPI(消息传递接口(interface))在高性能计算集群上完成。 同样,我可以使用多个辅助角色在云中进行一些并行化吗?有什么办
joblib模块提供了一个简单的帮助程序类,以使用多处理并行编写循环的循环。 这段代码使用列表推导来完成这项工作: import time from math import sqrt from job
我的问题是这样的one .但我想做一些不同的事情... 例如,在我的并行区域内,我想在 4 个线程上运行我的代码。当每个线程进入 for 循环时,我想在 8 个线程上运行我的代码。像 #pramga
我正在尝试使用 ipython 并行库中的并行计算。但是我对此知之甚少,而且我发现很难从对并行计算一无所知的人那里阅读该文档。 有趣的是,我发现的所有教程都只是重复使用文档中的示例,并使用相同的解释,
我的项目结构看起来像 Root + subproj1 + subproj2 在每个子项目中定义了自己的任务 run(){}。 我想要做的是从 Root 项目的运行任务并行运行 :subpro
我有一个 Foo ID 的列表。我需要为每个 ID 调用一个存储过程。 例如 Guid[] siteIds = ...; // typically contains 100 to 300 elemen
我是一名优秀的程序员,十分优秀!