问题标签 [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.
pex - Pex 的可见性问题
我尝试对项目中的某些代码部分使用生成单元测试。但是我得到的只是每次都出现相同的错误,并且提供的消息对于找到解决方案没有多大帮助。Pex 说代码对它不可见。但是,如果我将所需的类及其依赖项添加到另一个解决方案中,它就可以正常工作。有没有其他人遇到过这个问题并找到了答案?
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 目录?
痣的安装文件夹还是项目下的目录?
安装文件夹在两台机器上具有相同的文件和文件大小。
c# - 允许 NullReferenceExceptions 发生是一件坏事吗?
我正在玩 Pex 和 Moles,在运行 Pex 后发现 Pex 所说的几乎所有失败的测试都是因为 NullReferenceExceptions 是“允许的”。阅读 Pex 文档,我发现了以下内容:
如果较高级别的组件将格式错误的数据传递给较低级别的组件,而较低级别的组件拒绝了该组件,则应首先阻止较高级别的组件这样做。
所以上面的建议是我们应该在调用其他方法/类之前测试空值,例如:
恕我直言,全面检查空值对性能和代码膨胀的原因并没有太大吸引力,但我想听听其他人怎么说....
regex - Pex 检测可以导致代码改变其效果吗?
我有一个简单的 JSON 词法分析器类;它需要 astring
并生成一个IJSONValue
; 有IJSONValue
一个ToJSONString
返回有效 JSON 字符串的方法。
当然,它的代码非常复杂,有很多分支。这就是为什么我认为这将是测试 Pex 能力的理想场所。我创建了以下测试:
在此运行 Pex,我发现了一些与 null 处理无关的问题,我已经修复了这些问题。但是,我也有很多方法报告没有意义的异常。它们看起来像这样:
然而,这与我知道有效的测试之一非常相似。我在调试器中和调试器外部运行它,在这两种情况下测试都通过了。最令人难以置信的是,异常文本实际上是有道理的;Constant
如果正则表达式与字符串不匹配,则会报告该文本"false"
。对于其他正则表达式不匹配,我得到了类似的例外,这是没有意义的。
为什么 Pex 认为这会引发异常?仪器是否混乱ThreadLocal
或Regex
以一种奇怪的方式?这就是我的正则表达式持有类的样子(为简洁起见,对正则表达式进行了编辑)。
.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 中——包括单元测试……有什么想法吗?
.net - 使用 Pex 和 Moles 进行非 PUT 测试
我想使用 .NET 4 测试一些不是针对 TDD 或任何其他形式的自动化测试编写的代码。
VS2010 中的集成单元测试不足以实现我的目标,因此我查看了 Pex & Moles。
我所拥有的是用于表示远程设备上的视频文件的代码。通过特定的 SDK 处理对设备的访问,并为该 SDK 编写包装器。使用 Moles,我可以覆盖包装函数并将它们替换为从本地文件读取数据的函数。我使用 Moles 和集成单元测试来做到这一点。但是,这还不够,因为我只能以这种方式模仿“始终工作”的设备,而实际上,它们确实经常失败。
我曾考虑将 PexChoose 添加到虚假方法的主体中,以便它们按应有的方式工作或失败,以便 Pex 构建一个包含各种方法执行结果的可能组合的树。
但是,如果我尝试从现有代码创建 Pex 测试,从测试中删除所有参数(我不需要它们,一切都安排在里面),添加模拟方法并尝试运行 Pex Explorations,它会导致“路径超出范围”消息。我试过设置非常高的界限,但没有帮助。我能做些什么来解决这个问题?
总的来说,我对 Moles、Pex 和单元测试非常陌生,所以我可能在概念上是错误的。提前致谢。
pex - 存根生成失败,属性过时,Pex v0.94.51023.0
我有一个带有标记为过时属性的方法的接口。attributes错误参数设置为true以在使用时抛出异常。问题是这会导致存根无法为整个班级生成。当我将值更改为false时,存根会按预期生成。
我正在寻找一种方法来生成存根,同时将错误参数保留为true。
我尝试了不同的排列。
c# - Contract.Requires 抛出 pex 错误
可能重复:
如何配置 Pex 以尊重代码合同?
目前,当我运行 pex 探索时,我在类中创建的代码协定在 pex 探索结果中被视为错误。我认为当您使用代码合同运行 pex 探索时,应将合同失败视为预期行为。这是导致异常的代码。
测试方法:
方法调用失败:
- - 描述
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 和痣了,但这让我很反感。
command-line - 从 Pex 自动创建 NUnit 测试用例
我需要从我的 .Net 解决方案文件中自动创建 NUnit 测试用例。Morover 这需要从命令行完成。我听说 Pex 会自动创建测试用例。让知道