问题标签 [mbunit]
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.
.net - 在 Gallio / MbUnit 中运行的测试失败;无法加载 Castle DynamicProxy
我有一个 .NET 3.5 程序集,包含大约 4000 个 MbUnit 测试。我一直在使用 mbunit.cons.exe 程序运行这些程序,没有任何问题。
现在我正在尝试切换到 Gallio(生成 XML 报告时,mbunit.cons.exe 开始因“内存不足”异常而崩溃)。
在 Icarus 中运行测试时,大多数都失败了,但有以下异常:
被测程序集确实使用动态代理。动态代理程序集与被测程序集位于同一目录中。
我尝试将包含程序集的目录放在 Icarus 的“提示目录”、“应用程序基目录”和“工作目录”字段中,但这不会改变结果。
有没有人成功地同时使用了 Gallio 和 Dynamic Proxy,或者有任何关于问题可能是什么的提示?
c# - 在 MbUnit 中比较两个相同的对象
从 MBUnit 我试图检查两个对象的值是否相同使用
但是我遇到以下失败:
备注:两个值在格式化时看起来相同,但它们是不同的实例。
我不想遍历每个属性。我可以从 MbUnit 执行此操作吗?
c# - 比较 MbUnit 3.1 中的 2 个列表
我正在尝试在 MbUnit 3.1 中比较 2 个 Dictionary 对象的相等性,如下所示
其中 FieldList 是 =Dictionary<string, object>
但是,这会引发以下“错误”:
这两个值在格式化时看起来相同,但它们是不同的实例。
有什么方法可以比较对象数据而不是实例?
提前致谢...
c# - 如何针对不同版本的外部 dll api 对我的项目进行单元测试?
我正在开发一个严重依赖外部 dll 的应用程序,我的应用程序需要支持新版本的 dll 以及向后兼容旧版本。
有什么好方法可以让我的单元测试针对所有这些不同的 dll 版本,而无需在新版本的 api 发布后立即重写测试?这个怎么处理最好?
谢谢!
methods - MBUnit - 在一个序列中多次调用相同的方法?
MBUnit 中有没有一种方法可以在序列中使用不同的参数多次调用相同的测试,例如:
Method1() Method2(param A) Method3() Method2(ParamB) Method4() Method2(ParamC)
ETC?我试过使用 Order 参数,但遗憾的是我太希望 Ordering 被认为是类范围而不是测试范围(1,2,3,4,5,6 而不是 1,2a,2b, 2c,3,4)。
selenium - Selenium Grid 并不总是使用其所有注册的 RC,为什么?
我的 Selenium Grid 设置如下(所有虚拟机)
VM1 - Windows 7 x64 Windows XP x32 - Grid Hub + 2 个注册默认 *firefox 环境的 RC
VM2 - Windows XP x32 - 2 个注册默认 *firefox 环境的 RC
VM3 - Windows XP x32 - 2 个注册默认 *firefox 环境的 RC
我很高兴使用 Mbunit 和 Gallio 来驱动 Grid,但我的问题是,有时 Grid 集线器会停止将执行传递给 1 个或多个 RC,尽管它们在集线器控制台上显示可用。他们似乎很高兴地保持心跳回到中心,但他们再也没有被要求做任何工作。这是在他们在测试运行的早期执行测试之后。
有谁知道为什么会发生这种情况?在每种情况下,我都观察到这种行为,最后一次测试是 RC 执行的,然后它似乎被集线器忽略,通过,会话成功关闭。有趣的是,每当它发生在超过 1 个 RC 上时,它总是(到目前为止)是在同一 VM 上运行的那对。然而他们正在设法维持他们的心跳,所以这不是网络连接问题。
任何帮助将不胜感激!
更新:在进一步尝试排除故障后,我现在发现了其他东西。首先,我将我的 Win7 VM 换成基于 XP 的 VM,以保持一致性并排除集线器在较新的操作系统上运行时可能出现的任何问题。我已经更新了上面的内容以反映这种变化。
在那次更改之后,集线器现在始终只使用 6 个注册 RC 中的最多 5 个。不使用哪个 RC 始终是最后一个向集线器注册的机器上的两个之一。因此,如果我在 VM1 上启动集线器,在 VM2 和 VM3 上启动 RC,然后在 VM1 上启动 RC,则永远不会使用 VM1 上的两个 RC 之一。
wpf - 单元测试:硬依赖 MessageBox.Show()
SampleConfirmationDialog 可以通过哪些方式进行单元测试?SampleConfirmationDialog 将通过验收测试来执行,但是我们如何对它进行单元测试,因为 MessageBox 不是抽象的并且没有匹配的接口?
c# - MbUnit 的 [Parallelizable] 和 DegreeOfParallelism 究竟是如何工作的?
我以为我了解 MbUnit 的并行测试执行是如何工作的,但是我看到的行为与我的预期有很大不同,我怀疑我错过了一些东西!
我有一组希望同时运行的 UI 测试。所有测试都在同一个程序集中,分为三个不同的命名空间。所有的测试都是完全独立的,所以我希望它们都可以并行执行。
为此,我在 AssemblyInfo.cs 中添加了以下内容:
我的理解是,程序集属性的这种组合应该考虑所有测试[Parallelizable]
,并且测试运行程序在执行期间应该使用 8 个线程。我的个人测试都标有该[Test]
属性,仅此而已。它们都不是数据驱动的。
但是,我实际看到的最多是使用了 5-6 个线程,这意味着我的测试运行花费的时间比应有的要长。
我错过了什么吗?我是否需要做任何其他事情来确保跑步者正在使用我的所有 8 个线程?
注意无论我使用哪个跑步者,行为都是相同的。GUI、命令行和 TD.Net 运行器的行为都与上述相同,再次让我认为我错过了一些东西。
编辑:正如评论中所指出的,我正在运行 MbUnit 的 v3.1(更新 2 build 397)。文档表明程序集级别属性是可用的[parallelizable]
,但它似乎也引用了框架的 v3.2,尽管它还不可用。
编辑2:为了进一步澄清,我的程序集结构如下:
编辑 3:好的,我现在注意到,如果我一次只运行一个夹具,同时运行的最大测试数始终为 8。一旦我选择多个夹具,它就会下降到 5 或 6。如果我获取两个夹具的内容(目前它们每个都包含 12 个测试)并将它们放入同一个夹具(一个夹具中总共有 24 个测试),该夹具也将始终同时运行 8 个测试。
这似乎表明这不是单个测试中的问题,而是装配级别属性如何渗透到夹具,或者测试运行程序如何使用这些属性。
此外,我还观察到(在运行两个固定装置时),一旦两个固定装置中的一个完全执行,当运行器回到只运行一个固定装置时,它就会开始同时执行更多测试。现在对我来说,当第二个夹具中还有 7 个测试要运行时,第一个夹具就完成了执行。一旦发生这种情况,同时运行的测试数量就会从之前的 5 或 6 个跃升至最大可用的 7 个。
c# - 自动重新运行失败的测试
我有一组工作正常的 Selenium/MbUnit 测试,但往往需要一段时间才能运行(超过 4 小时) 我发现的一个问题是大约 20 分之一的测试似乎在运行时超时。我已经确认 Selenium GRID 正在工作并且 Selenium RC 都很好,它似乎只是系统的一个 qwerk。真正令人讨厌的是,如果我再次运行这些测试,它们通常会通过。
我想知道的是,如果捕获到特定类型的异常,我是否有办法自动重新运行测试(可能在代码中)......
我试图在 catch 语句中添加几行代码,但我知道这是重新运行测试的一种非常老套的方法。这是代码:
有什么建议么?
continuous-integration - 使用 MbUnit 测试运行 Gallio 所需的最少二进制文件是什么
我们最近将我们的应用程序升级到了 .Net 4.0。我们使用的是 MbUnit 2.x。随着升级到 .Net 4.0,MbUnit 测试似乎没有运行。我决定升级到与 Gallio 测试运行器一起提供的 MbUnit v3,而不是与之抗争。
我想将最少需要的二进制文件/文件放入我们项目文件夹的第三方文件夹中的 Nant 文件夹中,该文件夹已签入 svn。这样,构建服务器和开发人员无需安装 Gallio/MbUnit 即可运行单元测试。
MbUnit 测试和运行 Icarus 和 Echo 所需的二进制文件/配置文件的最少列表是什么?