我是Pex和Moles的新手。我正在尝试在我的代码上运行Pex,但是我正在使用构造函数注入。有没有一种方法可以指导Pex如何注入构造函数?

编辑 通用标签

我需要注入存根userRepository。调用_userRepository.GetById(id)时,Pex失败,并显示NullReferenceException。我一直在使用Moq进行单元测试,但是我想切换到pex和moles

我应该使用PexFactories创建存根吗?

有帮助吗?

解决方案

尝试将Moles Stub类型传递给Pex生成的参数化测试。要创建参数化测试,请右键单击要浏览的类,然后选择 PEX>创建参数化单元测试。这会在测试类中生成一个包含参数的方法。各个测试称为此参数化测试,并发送各个测试参数。

当被测代码通过自变量(具有接口类型的自变量)使用依赖项注入时,Pex生成的参数化测试方法还将包含相同的接口类型自变量。您可以编写自己的测试方法,该方法也调用参数化方法,并为其提供自己的值,包括接口类型。只要确保不要将它们写在Pex生成的文件中即可!

我还建议您使用Mole Stub类型进行单元测试注射。 Microsoft Moles参考手册是开始学习的好地方关于如何在单元测试中使用Moles。当您创建参数化测试时,将为您的界面创建一个痣桩类型。只需为您的存根类型配置弯路,然后将其传递给参数化测试即可。

创建存根弯路非常容易。我建议在测试项目中创建一种配置方法,以配置经常使用的弯路。通常,我会在此方法中添加一个枚举标志作为参数,因此我可以轻松地告诉它要在某些类型上创建的绕道而行,一次调用即可。

示例枚举: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top