问题标签 [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 投票
0 回答
272 浏览

linq-to-sql - 如何使用 Moles 检查 DataContext 的更改

我正在尝试使用 Moles 对 Linq To Sql 数据上下文进行单元测试。被测方法将几个对象插入到数据上下文中。我的单元测试应该验证这些对象是否真的要提交到数据库。

我曾希望我可以使用 SubmitChanges 方法并使用 datacontext 的 GetChangeSet() 方法来检索更改。当然,我得到一个例外,因为 GetChangeSet() 方法没有被摩尔。那我在这里做什么?我错过了设置步骤吗?

编辑:这个问题似乎表明我可以使用 SubmitChanges 方法来获取 ChangeSet,但是该方法(似乎)是不可用的,因为它没有痣。这让我更加怀疑我缺少某种设置步骤。

0 投票
2 回答
1973 浏览

tfs - 在使用 moles 程序集的项目上使用 TFS2010 构建失败并显示 -1002,因为无法解析引用

在玩了很多之后,我设法让 TFS 能够在我的所有项目上运行构建,除了测试项目。这些里面有一个鼹鼠组件。

我得到的错误是

C:\Program Files\Microsoft Moles\bin\Microsoft.Moles.targets (79):
命令 ""C:\Program Files\Microsoft Moles\bin\moles.exe"
@"C:\Builds\2\cv2\ DevBranchBuild\Sources\CV.BL.Tests\obj\Release\Moles\moles.args""
以代码 -1002 退出。

警告是

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1360):
无法解析此引用。
找不到程序集“CV.DAL.Moles,版本=1.0.0.0,文化=中性,处理器架构=MSIL”。
检查以确保该程序集存在于磁盘上。
如果您的代码需要此引用,您可能会遇到编译错误。

CV.DAL 是我正在安装的组件。

我正在使用最新版本的 pex 和 moles。

我还将CV.DAL.moles文件签入 TFS(不是程序集)。一切都在我的本地机器上构建得非常好。我用来构建的机器具有完全相同的配置。确切地说,我的意思是一个是 32 位,另一个是 64 位:o(那里严重疏忽)。

有任何想法吗?

这使得 pex 和 moles 完全没用,因为它在合并分支时打破了门控签到,这是一个很大的耻辱,因为我在它们上投入了大量的时间。

编辑

哪个 molesAssemblies 目录?
痣的安装文件夹还是项目下的目录?
安装文件夹在两台机器上具有相同的文件和文件大小。

0 投票
1 回答
768 浏览

.net-3.5 - 可以在 3.5 MsTest 单元测试程序集中编写测试吗?

嗨:我很喜欢玩 Pex 和 Moles……现在是时候认真使用它来尽可能多地覆盖旧版应用程序了。

我们已经开始转换为 .NET 3.5(客户端还不能托管在 .NET 4.0 中)

我们注意到我们在让 Moles 工作时遇到了麻烦。

如果测试项目程序集是 .NET 4.0 似乎可以工作——但是当将单元测试程序集框架转换回 .NET 3.5 时(在安装 Visual Studio 2010 SP1 以提供该功能之后)它停止工作。

一直抱怨“您只能使用针对 .NET Framework 3.5 的测试程序集中的默认主机适配器运行测试”

如果客户希望一切都在 .NET 3.5 中——包括单元测试……有什么想法吗?

0 投票
1 回答
987 浏览

.net - 如何调试使用 Microsoft Moles 框架的单元测试

我们的团队正在为 .Net 项目编写单元测试。我们使用“Visual Studio 2010”IDE、“NUnit”(v. 2.5.9)单元测试框架和“Microsoft Moles”类型隔离框架。

我们遇到了一个问题:我们无法调试使用 Moles 的单元测试(而不使用 Moles 的测试可以正常调试)。使用 Moles 的测试失败并显示以下错误消息:

Microsoft.Moles.Framework.Moles.MoleInvalidOperationException :Moles 要求测试在检测过程中。

有谁知道为什么调试这些测试不起作用?
提前致谢!

0 投票
1 回答
552 浏览

.net - 如何在不安装的情况下运行使用 Microsoft Moles 编写的单元测试?

我们的团队正在使用“Visual Studio 2010”IDE 和“NUnit”(v. 2.5.9) 单元测试框架为一个大型 .Net 项目编写单元测试。我们还使用“Microsoft Moles”类型隔离框架。在我们完成为特定模块编写测试后,我们必须构建所有模块并在未安装 Moles 的不同机器上运行单元测试。

是否可以在不实际安装 moles 框架而仅通过复制和/或注册(在 GAC 或系统注册表中)特定组件的情况下运行用 moles 编写的单元测试?如果是这样,这些组件是什么?


例如,我们发现它需要在 Windows 注册表中注册“Microsoft.ExtendedReflection.ClrMonitor.x86”才能运行单元测试。

0 投票
1 回答
899 浏览

.net - Moles 可以与 nUnit 一起使用吗?

我刚刚从 Microsoft Research 看到Moles模拟框架,在我花时间看它之前,我想知道它是否可以与 nUnit 一起使用,还是我必须使用 msTest?

0 投票
2 回答
187 浏览

.net - 使用 Pex 和 Moles 进行非 PUT 测试

我想使用 .NET 4 测试一些不是针对 TDD 或任何其他形式的自动化测试编写的代码。

VS2010 中的集成单元测试不足以实现我的目标,因此我查看了 Pex & Moles。

我所拥有的是用于表示远程设备上的视频文件的代码。通过特定的 SDK 处理对设备的访问,并为该 SDK 编写包装器。使用 Moles,我可以覆盖包装函数并将它们替换为从本地文件读取数据的函数。我使用 Moles 和集成单元测试来做到这一点。但是,这还不够,因为我只能以这种方式模仿“始终工作”的设备,而实际上,它们确实经常失败。

我曾考虑将 PexChoose 添加到虚假方法的主体中,以便它们按应有的方式工作或失败,以便 Pex 构建一个包含各种方法执行结果的可能组合的树。

但是,如果我尝试从现有代码创建 Pex 测试,从测试中删除所有参数(我不需要它们,一切都安排在里面),添加模拟方法并尝试运行 Pex Explorations,它会导致“路径超出范围”消息。我试过设置非常高的界限,但没有帮助。我能做些什么来解决这个问题?

总的来说,我对 Moles、Pex 和单元测试非常陌生,所以我可能在概念上是错误的。提前致谢。

0 投票
1 回答
2116 浏览

c# - 如何对带有内部异常的代码进行单元测试?

我想对以下代码进行一些单元测试覆盖:

编辑:看来我不需要 Moles 来测试这段代码。另外,我有一个错误,第 5 行和第 6 行颠倒了。

0 投票
1 回答
213 浏览

moles - 为什么框架不绕道?

我是依赖于 iTextSharp 开源 Pdf 库的单元测试代码。TextSharp 中的类之一是 PdfReader,它具有接受字节数组的构造函数之一。我将问题简化为以下内容:

但是,此代码仍然调用真正的 PdfReader 而不是模拟:

iTextSharp.text.pdf.PdfReader.CheckPdfHeader iTextSharp.text.pdf.PdfReader.ReadPdf() iTextSharp.text.pdf.PdfReader..ctor(Byte[] pdfIn, Byte[] ownerPassword) iTextSharp.text.pdf.PdfReader.. ctor(字节[] pdfIn)

毫不奇怪,它因“..System.IO.IOException: PDF header signature not found..”而爆炸

不知道我做错了什么......

-斯坦

0 投票
1 回答
253 浏览

pex - 存根生成失败,属性过时,Pex v0.94.51023.0

我有一个带有标记为过时属性的方法的接口。attributes错误参数设置为true以在使用时抛出异常。问题是这会导致存根无法为整个班级生成。当我将值更改为false时,存根会按预期生成。

我正在寻找一种方法来生成存根,同时将错误参数保留为true

我尝试了不同的排列。