我已经开始尝试使用AutoFixture。在我的研究中,我发现有一个InlineAutoDataAttribute
可以用来生成具有不同输入参数的多个测试用例(给定一些要求)。但是,InlineAttribute
和类似的InlineAutoDataAttribute
仅可用于编译const
数据。所以我一直在寻找类似MemberAutoDataAttribute
的东西,因为MemberDataAttribute
将允许我输入非'compile time const'对象的集合,例如Exception
实例的集合。遗憾的是,该属性不存在。
是否有某种方法可以重用AutoFixture进行测试,从而可以生成多个测试用例?可以通过某些ICustomization
实现来实现吗?
下面是我正在描述的情况的一个示例。请注意,MyCustomAutoDataAttribute
只是AutoDataAttribute
的基本继承对象,它导致为治具配置AutoMoqCustomization
。
[Theory, MyCustomAutoDataAttribute]
public void FooBar(Exception exception, [Frozen] ISomeInterface)
{
...
ISomeInterface.Setup(i => i.SomeMethod()).Throws(exception);
...
}
答案 0 :(得分:0)
我找到了解决问题的可行方案。感觉像是一种变通方法,但它为我完成了工作。
[Theory]
[MyCustomInlineAutoData(typeof(CustomException1))]
[MyCustomInlineAutoData(typeof(CustomException2))]
public void FooBar(Type exceptionType, [Frozen] Mock<ISomeInterface> interface, [Frozen] IFixture fixture)
{
var exception = (Exception) new SpecimenContext(fixture).Resolve(exceptionType)
interface.Setup(i => i.SomeMethod()).Throws(exception);
}
具有以下属性定义:
public class MyCustomInlineAutoData : InlineAutoDataAttribute
{
public MyCustomInlineAutoData(params object[] values) : base(new MyCustomAutoDataAttribute(), values)
{
}
}