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

0 投票
2 回答
1709 浏览

c# - 用 MS Moles 摩尔 DataContext?

我怎样才能摩尔我在类中使用的 DataContext 将消息写入表。我想断言 LINQ 正在写入的表具有预期的消息数。这是我到目前为止所拥有的。

如果我在我的测试类中将此代码与 xUnit 一起使用,我将收到此异常

我在这里缺少什么以及如何在鼹鼠上实现 DataContext.Dispose() ?我在没有 Pex 的情况下独立使用痣。

0 投票
3 回答
2603 浏览

unit-testing - Moq 和 Rhino 模拟之间的语法比较

我的公司正在尝试决定我们是否要对 Moq、Rhino Mocks 或 MS Moles and Stubs 进行标准化。

我对 Rhino Mocks、Moles 和 Stubs 相当了解。但我不熟悉起订量。语法是如何工作的?它是否支持像 Rhino Mocks 一样的 Arrange Act Assert (AAA)(我听说他们创建了它,但我不确定)。它有强类型吗?

基本上,我倾向于 Rhino Mocks(在需要的地方使用 Moles)。但我不想仅仅因为我熟悉 Rhino Mocks 就这样做。如果 Moq 实际上更好或更容易使用(甚至更重要),那么我想学习它并选择那个。

那么,有没有人使用过这两种方法并感觉想给我一个语法比较?

0 投票
3 回答
2872 浏览

unit-testing - 如何在实体框架中使用“Pex 和 Moles”库?

这是一个艰难的问题,因为使用 Pex 和 Moles 的人并不多,我认为(尽管 Pex 是一个非常棒的产品 - 比任何其他单元测试工具都要好得多)

我有一个数据项目,它有一个非常简单的模型,只有一个实体(DBItem)。我还在DBRepository这个项目中编写了一个操作这个 EF 模型的代码。Repository 有一个称为GetItems()返回业务层项目列表 ( BLItem) 的方法,看起来与此类似(简化示例):

所以现在我想为这个特定的方法创建一些单元测试。我正在使用Pex & Moles。我为我的 EF 对象上下文创建了痣和存根。

我想编写参数化的单元测试(我知道我首先编写了我的生产代码,但我必须这样做,因为我正在测试 Pex 和 Moles)来测试此方法是否返回有效的项目列表。

这是我的测试课:

然后我为这个特定的参数化单元测试运行Pex Explorations,但我得到一个错误path bounds exceeded。Pex 通过提供null给这个测试方法 (so items = null) 来开始这个测试。这是 Pex 正在运行的代码:

这是 Pex 提供的附加评论:

对于这些输入,测试用例运行时间过长,Pex 停止了分析。请注意:方法 Oblivious.Data.Test.Repositories.TaskRepositoryTest.b__0 被调用了 50 次;请检查代码是否陷入无限循环或递归。否则,单击“设置 MaxStack=200”,然后再次运行 Pex。

更新属性 [PexMethod(MaxStack = 200)]

问题

我这样做是否正确?我应该改用 EFContext 存根吗?我是否必须在测试方法中添加其他属性,以便 Moles 主机运行(我不确定现在是否可以)。我只运行 Pex & Moles。没有 VS 测试或 nUnit 或其他任何东西。

我想我应该对 Pex 设置一些限制,它应该为这个特定的测试方法提供多少项目。

0 投票
1 回答
248 浏览

.net - 具有自动代码探索功能的参数化测试工具

我已经检查并玩了一点Microsoft Pex。它是一个非常方便的工具/库,尽管用它编写参数化单元测试并不那么直接。但是如果使用得当,它可以提供比编写手动单元测试更好的测试代码覆盖率。更不用说编写这些测试所花费的时间了。它也与 Visual Studio 很好地集成在一起。

我想知道是否有任何其他工具可以让您编写参数化单元测试并运行它们,以便内部算法智能地选择值以提供完整的代码测试覆盖率?

如果其他一些工具/库像 NUnit+Moq 一样易于使用,我会更加高兴。Pex 的学习曲线相当陡峭(我想 Moles 也是如此)。

NUnit 是否有计划在未来支持带有智能参数选择的参数化测试?有人有这方面的内幕吗?

0 投票
1 回答
449 浏览

c# - 为什么在单独运行时使用 HostType("Moles") 进行单元测试的断言会通过,但在使用一组测试运行时会失败?

我最近加入了 Pex 和 Moles 的潮流,以便使用许多静态、非虚拟、密封等元素来测试一些逻辑。最近,我开始看到一些我无法从一些测试中解释的行为.

我存根的接口的一些方法返回 void,因此我将存根设置为更新布尔变量以指示它们已被调用的委托。这就是我正在做的事情:

无论出于何种原因,如果我单独运行此测试,上述断言就会成功。但是,如果我将测试与程序集中的所有其他测试一起运行(使用 Visual Studio 的“在解决方案中运行所有测试”功能),第一个断言将失败。

我想知道为什么会发生这种情况,以及我需要改变什么来解决这个问题。

0 投票
0 回答
406 浏览

c# - 将 MS Moles 与数据上下文和存储过程一起使用,而不使用连接字符串

我刚刚开始使用 MS Moles 进行测试,并且我遵循了 jcollum(thanks) 在此处的这个 stackoverflow 问题中使用 Mole 作为表格的想法/模式。

但是我遇到了一个问题,因为当我这样使用数据源时,我不想传递连接字符串:

我真的很喜欢这样一个事实,我只需要在桌子上捣蛋,其他一切都为我完成。我意识到我可以只使用 ExecuteStoredProcedure 方法,但我想知道当我没有传入连接字符串时,我是否可以以某种方式避免我到达这里的 sql 异常。或者,如果我有更好的方法来做到这一点?

因此,有没有人有一个解决方案,这样我就可以避免放入连接字符串?提前致谢。

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 回答
2140 浏览

unit-testing - 在 DateTime 中使用 Moles

我开始在单元测试中使用 Moles,并且在文档方面有点挣扎。

我想鼹鼠 DateTime.Now。

如果您环顾一下这样做的旧方法是添加对 mscorlib 的引用,然后为其添加一个 stubx 文件(添加新项目 -> 用于测试的存根和痣)。

'Stubs and Moles for Testing' 模板已被弃用,您需要做的只是右键单击参考并选择'Add moles assembly',这很好。

VS2010 不允许您直接添加对 mscorlib 的引用,因为我们有对“系统”的引用,这没关系,因为我可以在对象浏览器中看到 DateTime 作为此命名空间的一部分。

如果我为系统引用添加一个痣程序集并重建,我仍然无法解析 MDateTime。

有什么建议么 ?

0 投票
3 回答
659 浏览

.net - 将 Moles 与 XUnit 一起使用 - 错误的 dll 版本

我正在尝试设置 Moles 以在我们的单元测试中使用。我们使用的是xunit,所以我是usingmole()自带的xunit扩展Microsoft.Moles.Framework.Xunit。但是,当我们运行 Xunit 1.7 时,Moles 抱怨我没有运行版本 1.6.1.1521(带有FileLoadException)。

Moles 手册(第28 页)确实说:

xUnit.net 版本:

1.5.0.1479(对于其他 xUnit.net 版本,从源重新编译属性)

这就是我卡住的地方——这个 xunit 扩展的源代码在某处可用吗?还是我必须使用 Moles 需要的特定版本的 xunit?