问题标签 [pex]

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 投票
1 回答
100 浏览

pex - Pex 的可见性问题

我尝试对项目中的某些代码部分使用生成单元测试。但是我得到的只是每次都出现相同的错误,并且提供的消息对于找到解决方案没有多大帮助。Pex 说代码对它不可见。但是,如果我将所需的类及其依赖项添加到另一个解决方案中,它就可以正常工作。有没有其他人遇到过这个问题并找到了答案?

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 投票
4 回答
250 浏览

c# - 允许 NullReferenceExceptions 发生是一件坏事吗?

我正在玩 Pex 和 Moles,在运行 Pex 后发现 Pex 所说的几乎所有失败的测试都是因为 NullReferenceExceptions 是“允许的”。阅读 Pex 文档,我发现了以下内容:

如果较高级别的组件将格式错误的数据传递给较低级别​​的组件,而较低级别的组件拒绝了该组件,则应首先阻止较高级别的组件这样做。

所以上面的建议是我们应该在调用其他方法/类之前测试空值,例如:

恕我直言,全面检查空值对性能和代码膨胀的原因并没有太大吸引力,但我想听听其他人怎么说....

0 投票
0 回答
124 浏览

regex - Pex 检测可以导致代码改变其效果吗?

我有一个简单的 JSON 词法分析器类;它需要 astring并生成一个IJSONValue; 有IJSONValue一个ToJSONString返回有效 JSON 字符串的方法。

当然,它的代码非常复杂,有很多分支。这就是为什么我认为这将是测试 Pex 能力的理想场所。我创建了以下测试:

在此运行 Pex,我发现了一些与 null 处理无关的问题,我已经修复了这些问题。但是,我也有很多方法报告没有意义的异常。它们看起来像这样:

然而,这与我知道有效的测试之一非常相似。我在调试器中和调试器外部运行它,在这两种情况下测试都通过了。最令人难以置信的是,异常文本实际上是有道理的;Constant如果正则表达式与字符串不匹配,则会报告该文本"false"。对于其他正则表达式不匹配,我得到了类似的例外,这是没有意义的。

为什么 Pex 认为这会引发异常?仪器是否混乱ThreadLocalRegex以一种奇怪的方式?这就是我的正则表达式持有类的样子(为简洁起见,对正则表达式进行了编辑)。

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 投票
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 回答
253 浏览

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

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

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

我尝试了不同的排列。

0 投票
2 回答
1167 浏览

c# - Contract.Requires 抛出 pex 错误

可能重复:
如何配置 Pex 以尊重代码合同?

目前,当我运行 pex 探索时,我在类中创建的代码协定在 pex 探索结果中被视为错误。我认为当您使用代码合同运行 pex 探索时,应将合同失败视为预期行为。这是导致异常的代码。

测试方法:

方法调用失败:

- - 描述

0 投票
1 回答
273 浏览

asp.net-mvc-3 - 帮助。Pex 杀死了我的项目和 GAC

真的不确定这里发生了什么,但是我在一个项目中使用 pex 和 moles,然后我让 pex 为 MVC 的 Web 客户端生成测试。这导致项目中出现各种构建问题,因此我将项目恢复(使用 HG 的源代码控制)。我仍然遇到所有相同的构建问题,其中包括缺少引用以及与缺少引用相关的其他错误。当我删除解决方案中的引用时,例如 system.web.mvc 和 system.componentmodel.dataannotations,并尝试从 GAC 重新添加它们,它们在 GAC 中不可见。我无法理解 pex 是如何做到这一点的。现在我在 Visual Studio 中的所有项目都存在与 DataAnnotations、Mvc 和其他一些参考资料相同的问题?我对他们中的任何一个都无能为力。一世'

我想我可以恢复我的大部分工作,因为它是一个虚拟机,而且我有一个不旧的快照,而且我在保管箱之外工作,所以可以取回我的所有源。我只是不明白这是怎么发生的,任何人都有任何建议,同样性质的经历。我真的开始喜欢 pex 和痣了,但这让我很反感。

0 投票
2 回答
1503 浏览

command-line - 从 Pex 自动创建 NUnit 测试用例

我需要从我的 .Net 解决方案文件中自动创建 NUnit 测试用例。Morover 这需要从命令行完成。我听说 Pex 会自动创建测试用例。让知道