问题标签 [pex-and-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.
moles - 将 Moles 与 MsTest 一起使用时,痣会“冲突”
在使用 Moles 和 MsTest 时,我发现了一种可以解释(但令人沮丧)的行为。
想象一下以下情况:
- “测试 DLL A”在 mscorlib 上使用 Moles
- “测试 DLL B”在 mscorlib 上使用 Moles
为了缩短编译时间,在这两种情况下,我们都在编辑 .moles 文件,以便询问单个类的痣的生成。
当我们这样做时,我们的项目将编译得非常好。
但是当我们运行解决方案的测试时,MsTest 过程将是:
- 复制“Out”文件夹中的所有 DLL
- 在“Out”文件夹中运行测试
因此,复制到“Out”文件夹将尝试复制 mscorlib.Moles.dll 的两个版本(一个是类型 1,一个是类型 2),当然,第二个会覆盖第一个。
所以我对“Test DLL A”的测试将失败,因为我的鼹鼠组装不正确。
当然有两个简单的解决方法:
- 在每个 .moles 文件中包含所有需要的类型(在所有项目中)
- 要么不使用类型过滤
你也遇到过这个“问题”吗?还有其他解决方案吗?
非常感谢 !
Pierre-Emmanuel DotNetHub 用户组负责人
visual-studio-2010 - 如何将 Moles 用于 AppSettingsReader?
我使用 Moles 框架进行单元测试已经有一段时间了,但最近我偶然发现了 AppSettingsReader,它似乎不能被“moled”。其命名空间中的其他类型不是问题(包括(M)AppSettingsSection),所以我不知道我是否在这里做错了。
有什么线索吗?
提前致谢
G。
code-contracts - Pex 不满足代码合同
我正在尝试编写一个 pex 测试,我注意到它总是提供一个错误值作为我想要的参数之一。我的测试看起来像这样(简化:有/还有更多参数,但没有什么不同):
我想测试一个场景,让 pex 进行探索,确保这value
是真的。我做了另一个看起来像这样的测试:
但是当我让 Pex 探索它时,它仍然会吐出错误的结果,value
并且它生成的测试“通过”。如果我在要求后面加上一行,Contract.Assert(!value);
它将创建另一个测试并通过 truevalue
以使断言失败。
问题是,为什么 Pex 不满足代码合同?
c# - 在另一个过程中使用 Moles 的挂钩方法
我有一个用 Visual Studio 编译的 C# 应用程序。我想拦截并记录对该应用程序中某些特定方法的调用和序列化方法参数。是否可以拦截另一个进程中的方法调用(也许通过使用 App 域?)。有没有关于的文章/教程?
换句话说,我想在 .NET 中实现与 madCodeHook 和 Detours 对 win32 类似的目标。
谢谢
visual-studio-2010 - 如何用痣只调用一次代表/一次?
怎么可能只调用一次委托方法/一次用痣?
我只想调用一次“ResultateGet”方法,因为第一次没有委托的情况下,init 非常复杂。
我通常对如何在调用原始函数而不是委托之前调用一次或特定次数的痣代表感兴趣。
更新: 我找到了一种方法,这似乎有点麻烦。有更好的解决方案吗?
visual-studio-2010 - Visual Studio 2010 Ultimate 中的 Pex 和 F#
我一直在尝试在 F# 项目中使用 Pex,但我遇到了几个问题,希望能得到一些帮助:
Visual Studio Pex 插件工作了半个小时,而不是用于复杂的项目探索。
之后,每次我从 Visual Studio 2010 中运行 Pex 探索时,都会收到一条
!warning! [metadata] no explorations found after applying all filters; did you forget a [PexClass] or [PexMethod] attribute?
错误消息。如果我在进行探索时复制并粘贴 Visual Studio 运行的命令并删除一些属性(如 sourceFilter ...)并从命令控制台运行它,那么我会得到一些生成的测试。知道为什么 Visual Studio 会生成无效命令吗?一段时间后,Microsoft.Pex.Framework.dll 要么从 .Net 引用列表中消失,我必须使用其文件路径手动引用它,或者我什至无法再引用它,我必须卸载/重新安装 Pex。(
A reference to C:\Program Files (x86)\Microsoft Moles\PublicAssemblie\Microsoft.Pex.Framework.dll could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
)
当我处理 C# 项目时,不会发生所有这些问题。
学术版出现问题 1 2 3。
使用可用于 MSDN 订阅者的版本,我从来没有在 Visual Studio (Visual Studio 2010 Ultimate NO SP1) 中使用它。但是它可以在命令提示符下工作。这个版本我没有遇到问题3。
有没有人设法让 Pex 在 Visual Studio 中与 F# 一起工作?如果是,你能告诉我你是怎么做到的吗?您使用哪些版本(VS 和 Pex)?
visual-studio-2010 - 类更改后 Moles 不显示新的方法签名
我有
并将此私人与痣一起使用
现在我将方法更改为:
但是痣并没有给我新的签名。门槛MVoo.DooInt32 但我期待MVoo.DooStringObject
我删除了痣参考,清洁,重建。目前还没有阳性结果。
有任何想法吗?
c# - 无法为 System.Diagnostics.EventLog 创建 Mole 类型
我正在使用 TDD 和 Moles 构建(又一个)Windows 服务。该项目包括对System.Dagnostics.EventLog的扩展,包括日志消息中输入参数 Exception 对象的详细信息。我必须验证异常详细信息以及内部异常的详细信息是否正确写入事件日志。扩展最终调用 System.Dagnostics.EventLog.WriteEntry。
我想绕道 System.Diagnostics.Moles.MEventLog.WriteEntry。但是,MEventLog 不存在(没有 SEventLog)。关于如何隔离事件日志交互的任何想法?
moles - 无法为 System.Environment 类创建 Mole
我想替换我的单元测试中的行为,但是在为程序集Environment.GetFolderPath
生成痣之后,程序集不包含 type 的定义。System
System.Moles
MEnvironment
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 以及机器上的测试代理,但无济于事。有任何想法吗?有没有其他人遇到过这个?