我试图了解Visual Studio中automated
测试类的生成。我正在使用Microsoft Plex Framework
。这是Pex框架的详细信息。 https://www.microsoft.com/en-us/research/project/pex-and-moles-isolation-and-white-box-unit-testing-for-net/
我使用了如下所示的代码
public class AuditRepository:BaseDataRepository<AuditItem, int>, IAuditRepository
{
public AuditRepository(string connString, IContainerFactory containerFactory) : base(connString, containerFactory)
{
}
public IEnumerable GetTopAudit(int topCount)
{
const string sql = "SELECT TOP ({0}) * FROM audit ORDER BY CreatedTime DESC";
return Query(string.Format(sql, topCount));
}
}
我已使用InteliTest
为上述方法创建unit test
,并自动生成了test files and methods
,如下所示
/// <summary>This class contains parameterized unit tests for AuditRepository</summary>
[PexClass(typeof(AuditRepository))]
[PexAllowedExceptionFromTypeUnderTest(typeof(InvalidOperationException))]
[PexAllowedExceptionFromTypeUnderTest(typeof(ArgumentException), AcceptExceptionSubtypes = true)]
[TestClass]
public partial class AuditRepositoryTest
{
/// <summary>Test stub for GetTopAudit(Int32)</summary>
[PexMethod]
public IEnumerable GetTopAuditTest([PexAssumeUnderTest]AuditRepository target, int topCount)
{
IEnumerable result = target.GetTopAudit(topCount);
return result;
// TODO: add assertions to method AuditRepositoryTest.GetTopTest(AuditRepository, Int32)
}
}
现在,当我尝试使用InteliTest
运行测试时,它会显示警告并建议通过添加以下代码来进行修复[基本上在单击“修复”按钮时生成的代码下方]
public static partial class AuditRepositoryFactory
{
/// <summary>A factory for Radiometer.RadCon.RAP.Repository.AuditRepository instances</summary>
[PexFactoryMethod(typeof(AuditRepository))]
public static AuditRepository Create(string connString_s, IContainerFactory containerFactory_iContainerFactory)
{
AuditRepository auditRepository
= new AuditRepository(connString_s, containerFactory_iContainerFactory);
return auditRepository;
// TODO: Edit factory method of AuditRepository
// This method should be able to configure the object in all possible ways.
// Add as many parameters as needed,
// and assign their values to each field by using the API.
}
}
我无法理解屏幕后面发生了什么,在下面的注释行下面是什么意思
// TODO:编辑AuditRepository的工厂方法
//此方法应该能够以所有可能的方式配置对象。
//根据需要添加任意数量的参数,
//,并使用API将其值分配给每个字段。
答案 0 :(得分:1)
您了解工厂模式是什么吗?
这些评论对如何创建工厂方法提出了建议。代码生成不足以知道如何使用此功能,因此注释为您提供了提示。
顺便说一句,您可能应该从工厂方法返回一个接口,以简化测试。
public static IAuditRepository Create(string connString_s, IContainerFactory containerFactory_iContainerFactory)
{ ... }