问题标签 [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.

0 投票
3 回答
1939 浏览

.net - 我是唯一一个得到“当前目标框架中不可用的程序集”的人吗?

添加测试项目后,Visual Studio 2010 和任何报告此错误的框架版本一直存在问题:

“程序集在当前目标框架中不可用”

到目前为止,我只有两个程序集就发生了这种情况,并且始终一致:

  • System.ServiceProcess
  • 系统.配置.安装

问题是项目文件没有为这些引用识别特定的框架版本,在属性中显示版本 0.0.0.0。我可以通过手动更改项目文件以在参考元素中包含 <SpecificVersion>True</SpecificVersion> 来解决此问题。

这是一个问题,因为我无法继承或实现这些有问题的程序集的 Mole 类型。问题是 Pex 和 Moles 在构建过程中生成了自己的项目文件,这些文件也被破坏了。没有机会手动修复这些问题,而且我认为必须使用 ICorProfilerCallback.JITCompilationFinished 构建解决方法来编译任何东西是愚蠢的。

那么,还有其他人有这个问题吗?我已经重新安装了VS2010。我没有看到任何解决方法。

我肯定已经对此进行了研究,并且整年都在努力解决这个问题。我对此感到非常恼火,并认为某些事情只是出了问题,或者我不明白这是预期的行为(我无法想象为什么......)。

0 投票
1 回答
419 浏览

moles - Microsoft Moles 不会为多种方法创建痣

我在获取类中的几个静态方法时遇到问题,以及获取要识别的 .moles 文件中的 Diagnostics 属性

我的环境:

  • 视觉工作室 2008
  • Pex/鼹鼠版本 0.94.51023.0

特别是我需要并且无法获得对以下内容的引用的一种方法的签名:

我什至尝试将其更改为public staticprivate(非静态)并重新编译,但根本无法显示。它是同一方法的 5 个重载签名之一。这一个和另一个没有受到骚扰

所以我然后尝试在我的 .mole 文件中打开诊断和详细信息:

当我检查输出窗口并选择下拉框转到 Moles 输出时,我只得到这个:

是什么赋予了?我似乎无法弄清楚这一点。

辛迪

0 投票
0 回答
282 浏览

moles - 带有 moles runner 和 xml 输出的 xunit

有没有人有这个工作?我在将 moles runner 与 xunit 控制台一起使用并将 XML 输出保存到文件时遇到问题。我正在使用以下内容:

痣似乎可以调用跑步者,但我得到:

然而,如果我为 moles runner 诊断设置 /d 标志,它会显示正确的跑步者:

如果我运行它,测试就会运行(并且因为它们是鼹鼠测试而失败),但是会创建 xml 文件。

有任何想法吗?

0 投票
1 回答
268 浏览

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吗?

0 投票
1 回答
817 浏览

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 上的配置:

  1. 视窗 2008 服务器 R2
  2. 痣 0.94.51023.0 x64
  3. VS2010 测试代理\控制器 x64
  4. VS2010 构建代理 x64
  5. VS2010 实验室代理 x64

测试设置文件设置为使用默认主机类型并在 x64 机器上以 x64 执行测试。这与我们使用的开发盒相同,它们都可以正常执行测试。

我已经尝试卸载/重新安装 Moles 以及机器上的测试代理,但无济于事。有任何想法吗?有没有其他人遇到过这个?

0 投票
1 回答
204 浏览

c# - 鼹鼠重定向不起作用

我在单元测试中使用 Moles 将调用重定向到日志记录应用程序块(EntLib 的包装版本),它适用于某些方法但不是全部。

这是代表正在设置的测试初始化​​方法...

这是重定向的方法签名(来自对象资源管理器)。

ExceptionEvent 和 CriticalEvent 能够正确记录到重定向的输出位置,但 DebugEvent 不能。DebugEvent 调用引发配置异常,因为它试图从配置文件加载日志记录配置。

我是否缺少一些简单的东西,或者这应该像我写的那样工作?

0 投票
1 回答
184 浏览

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 - 有足够的空间)。似乎痣主机进程正在达到某种限制。

0 投票
0 回答
894 浏览

moles - 该进程无法访问该文件,因为它正被另一个进程使用

我问这个问题是因为它是特定于痣的。在 Windows 7 64bit 上运行 VS2010,痣的 VsHost 停留在任务管理器中,导致此消息:

无法复制文件 该进程无法访问该文件,因为它正被另一个进程使用

解决方法:在任务管理器中杀掉进程Microsoft.Moles.VsHost.x86.exe

经常这样做是非常非常烦人的。我在 msdn 社交论坛上读到,这个问题将在某个时候得到解决(我记得帖子是 2010 年的,但找不到帖子)。

几乎每次我停止测试调试或调试时出现错误时都会发生这种情况。

关于这个问题有什么新的吗?

我非常希望 Moles 有朝一日会成为 Visual Studio 的标准部分,因为我非常喜欢这种 Typemocking!

0 投票
2 回答
665 浏览

c# - 在 EntityFramework 4.1 中查询数据库时如何使用 Moles 来破坏 DbContext?

我正在使用 Entity Framework 4.1 进行数据库访问,并希望对以下代码进行单元测试:

我正在使用 Moles 来消除数据库依赖关系,但是我被卡住了。我应该开始研究实体框架中的哪一点。

我正在关注这个示例,但它适用于 LINQ-To-SQL。

我还在考虑调试/跟踪实体框架,以确定在调用数据库之前要拦截哪个函数。但是,似乎没有可供 Entity Framework 4.1 跟踪的源代码。见讨论

谁能指导我应该在 DbContext 中删除哪些功能,以便我可以获取 EmployeeProfiles 列表?

0 投票
1 回答
665 浏览

moles - 使用 Moles 语法帮助使用泛型测试私有方法

我有一个看起来像这样的方法的签名:private IEnumerable BuildCustomerUpdatePlan(List localCacheChangedCustomers, List crmChangedCustomers){}

当我查看 moled 对象时,如何调用方法和测试的语法 (IntelliSense) 让我非常困惑,每次试一试时,我都会遇到编译错误。我浏览了 MSFT 网站上提供的基本教程,但我根本不知道如何使用 Moles 测试私有方法或如何处理返回类型和多个参数。

不幸的是,我一直找不到其他好的 HOWTO 或线程来演示比仅使用吐出 INT 并接受 INT 的简单 Add() 方法更复杂的示例。:(

尖端?