问题标签 [moles]
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 - 我是唯一一个得到“当前目标框架中不可用的程序集”的人吗?
添加测试项目后,Visual Studio 2010 和任何报告此错误的框架版本一直存在问题:
“程序集在当前目标框架中不可用”
到目前为止,我只有两个程序集就发生了这种情况,并且始终一致:
- System.ServiceProcess
- 系统.配置.安装
问题是项目文件没有为这些引用识别特定的框架版本,在属性中显示版本 0.0.0.0。我可以通过手动更改项目文件以在参考元素中包含 <SpecificVersion>True</SpecificVersion> 来解决此问题。
这是一个问题,因为我无法继承或实现这些有问题的程序集的 Mole 类型。问题是 Pex 和 Moles 在构建过程中生成了自己的项目文件,这些文件也被破坏了。没有机会手动修复这些问题,而且我认为必须使用 ICorProfilerCallback.JITCompilationFinished 构建解决方法来编译任何东西是愚蠢的。
那么,还有其他人有这个问题吗?我已经重新安装了VS2010。我没有看到任何解决方法。
我肯定已经对此进行了研究,并且整年都在努力解决这个问题。我对此感到非常恼火,并认为某些事情只是出了问题,或者我不明白这是预期的行为(我无法想象为什么......)。
moles - Microsoft Moles 不会为多种方法创建痣
我在获取类中的几个静态方法时遇到问题,以及获取要识别的 .moles 文件中的 Diagnostics 属性。
我的环境:
- 视觉工作室 2008
- Pex/鼹鼠版本 0.94.51023.0
特别是我需要并且无法获得对以下内容的引用的一种方法的签名:
我什至尝试将其更改为public static
或private
(非静态)并重新编译,但根本无法显示。它是同一方法的 5 个重载签名之一。这一个和另一个没有受到骚扰。
所以我然后尝试在我的 .mole 文件中打开诊断和详细信息:
当我检查输出窗口并选择下拉框转到 Moles 输出时,我只得到这个:
是什么赋予了?我似乎无法弄清楚这一点。
辛迪
moles - 带有 moles runner 和 xml 输出的 xunit
有没有人有这个工作?我在将 moles runner 与 xunit 控制台一起使用并将 XML 输出保存到文件时遇到问题。我正在使用以下内容:
痣似乎可以调用跑步者,但我得到:
然而,如果我为 moles runner 诊断设置 /d 标志,它会显示正确的跑步者:
如果我运行它,测试就会运行(并且因为它们是鼹鼠测试而失败),但是会创建 xml 文件。
有任何想法吗?
mbunit - 'Microsoft.Moles.Framework.MbUnit.MoledAttribute' 不是属性类
我正在尝试将 Moles 与Gallio/MbUnit一起使用。在引用Microsoft.Moles.MbUnit
和include 之后Microsoft.Moles.Framework.MbUnit
,我将[Moles]属性添加到我用 Moles 编写的测试中。不幸的是,它没有突出显示为蓝色(作为公认的属性)。当我尝试构建时,我收到以下错误:
Microsoft.Moles.Framework.MbUnit.MoledAttribute
不是属性类
该类型MbUnit.Core.Framework.DecoratorPatternAttribute
在未引用的程序集中定义。您必须添加对程序集的引用MbUnit.Framework, Version=2.4.2.355, Culture=neutral, PublicKeyToken=5e72ecd30bc408d5.
似乎被引用的 MbUnit 库是v2,不幸的是我使用的是Gallio v3.2.3 w/
MbUnit v3。可能有版本差异吗?会支持最新的Gallio/MbUnit吗?
visual-studio-2010 - TFS 2010 实验室管理环境中的 Microsoft Moles HostType 错误
我正在使用 TFS 2010 SP1 实验室管理和 LapDeployTemplate 的变体在 Hyper-V VM 上执行构建工作流和单元测试,通过 SCVMM 管理(根据 codeplex 上的 ALM Rangers Lab Management Guidance doco)。在配置完所有这些之后,我创建了一个测试计划,其中包含映射到使用 Moles 的自动化单元/集成测试的测试用例。我使用 tcm.exe 导入这些测试用例并将它们放入 Microsoft 测试管理器。
当我尝试使用 LabDeploy 工作流程在我的 VM 上远程执行测试用例时,出现以下错误: “由于以下原因,无法加载主机类型‘Moles’:找不到密钥‘Moles’。”
通常,我在未安装 Moles 的机器上看到此错误,但这是我当前在 VM 上的配置:
- 视窗 2008 服务器 R2
- 痣 0.94.51023.0 x64
- VS2010 测试代理\控制器 x64
- VS2010 构建代理 x64
- VS2010 实验室代理 x64
测试设置文件设置为使用默认主机类型并在 x64 机器上以 x64 执行测试。这与我们使用的开发盒相同,它们都可以正常执行测试。
我已经尝试卸载/重新安装 Moles 以及机器上的测试代理,但无济于事。有任何想法吗?有没有其他人遇到过这个?
c# - 鼹鼠重定向不起作用
我在单元测试中使用 Moles 将调用重定向到日志记录应用程序块(EntLib 的包装版本),它适用于某些方法但不是全部。
这是代表正在设置的测试初始化方法...
这是重定向的方法签名(来自对象资源管理器)。
ExceptionEvent 和 CriticalEvent 能够正确记录到重定向的输出位置,但 DebugEvent 不能。DebugEvent 调用引发配置异常,因为它试图从配置文件加载日志记录配置。
我是否缺少一些简单的东西,或者这应该像我写的那样工作?
performance - 使用 Moles 运行具有较大排列步骤的单元测试很慢
我已经使用 moles 有一段时间了,发现它对小型项目非常有用。
但是,在处理需要更广泛的安排任务的单元测试时,单元测试需要永远。
如果我在没有分配 HostType("Moles") 属性的情况下运行单元测试代码,则排列操作需要 < 10 秒(在运行预期的上下文时,它是一个 <2 秒的操作)。添加 Moles 主机属性会将这个时间延长到大约 4-5 分钟。
发生了什么事,我能做些什么呢?
----更新关于 BryanBCook 的回答。
以下是似乎是问题的代码(有点编辑)。如果问题是摩尔 IL 重写,它似乎发生在我不希望它应该发生的地方。你知道它是否会重写一切吗?我想我也很想知道它是否只是痣主机进程中的缩放问题。
---另一个更新
因此,重新排列类 init 以便在 STD 初始化后发生日志记录,并删除整个 STD 对象构造树中的 3 个调试日志记录语句(它们确实无用)已将排列操作减少到大约一分半钟。
虽然这不是最优的(STD 对象树构造中的异常将导致测试失败,而不是被测试的实际事物),但它仍然比支付这个惩罚更好。特别是因为施工投入受到严格控制。
话虽如此,我还注意到 moles 主机进程只使用了大约 138MB 的内存和 13% 的处理器。没有痣(并将所有依赖项添加到单元测试中),标准主机将使用更多(这个comp有一个i7 Quad和8GB ram - 有足够的空间)。似乎痣主机进程正在达到某种限制。
moles - 该进程无法访问该文件,因为它正被另一个进程使用
我问这个问题是因为它是特定于痣的。在 Windows 7 64bit 上运行 VS2010,痣的 VsHost 停留在任务管理器中,导致此消息:
无法复制文件 该进程无法访问该文件,因为它正被另一个进程使用
解决方法:在任务管理器中杀掉进程Microsoft.Moles.VsHost.x86.exe
经常这样做是非常非常烦人的。我在 msdn 社交论坛上读到,这个问题将在某个时候得到解决(我记得帖子是 2010 年的,但找不到帖子)。
几乎每次我停止测试调试或调试时出现错误时都会发生这种情况。
关于这个问题有什么新的吗?
我非常希望 Moles 有朝一日会成为 Visual Studio 的标准部分,因为我非常喜欢这种 Typemocking!
moles - 使用 Moles 语法帮助使用泛型测试私有方法
我有一个看起来像这样的方法的签名:private IEnumerable BuildCustomerUpdatePlan(List localCacheChangedCustomers, List crmChangedCustomers){}
当我查看 moled 对象时,如何调用方法和测试的语法 (IntelliSense) 让我非常困惑,每次试一试时,我都会遇到编译错误。我浏览了 MSFT 网站上提供的基本教程,但我根本不知道如何使用 Moles 测试私有方法或如何处理返回类型和多个参数。
不幸的是,我一直找不到其他好的 HOWTO 或线程来演示比仅使用吐出 INT 并接受 INT 的简单 Add() 方法更复杂的示例。:(
尖端?