Interface 自动定制对抽象类有效吗?

Interface 自动定制对抽象类有效吗?,interface,moq,abstract,xunit.net,autofixture,Interface,Moq,Abstract,Xunit.net,Autofixture,请注意,我对TDD有些陌生,所以我将接受一般性建议以及具体的答案 抽象类和接口都不能实例化。显然,Moq可以在第二次测试中给我一个ADataFeed的模拟实例。为什么AutoMoqCustomization适用于接口IDataFeed,但不适用于抽象类ADataFeed,而是引发InvalidOperationException 其次,AutoFixture方法(通常称为TDD)是什么来驱动一个设计,该设计可能需要一个带有构造函数的抽象类来要求并保证某些值,例如在本例中的连接字符串 [理论,自动

请注意,我对TDD有些陌生,所以我将接受一般性建议以及具体的答案

抽象类和接口都不能实例化。显然,Moq可以在第二次测试中给我一个ADataFeed的模拟实例。为什么AutoMoqCustomization适用于接口
IDataFeed
,但不适用于抽象类
ADataFeed
,而是引发InvalidOperationException

其次,AutoFixture方法(通常称为TDD)是什么来驱动一个设计,该设计可能需要一个带有构造函数的抽象类来要求并保证某些值,例如在本例中的连接字符串

[理论,自动烟雾数据]
public void alldatafeedshaveconctionstring(
IDataFeed(sut)
{
var result=sut.GetConnectionString();
Assert.Null(结果);
}
[事实]
public void alldatafeedsrequireActionString()
{
应为var=Guid.NewGuid().ToString();
var sut=新模拟(预期);
var result=sut.Object.GetConnectionString();
断言。相等(预期,结果);
}
[理论,自动烟雾数据]
public void AllDataFeedsRequireConnectionString2(
应为[冻结]字符串,
阿达塔(sut)
{
var result=sut.GetConnectionString();
断言。相等(预期,结果);
}

带有构造函数的抽象类必须标记为受保护。当构造函数标记为公共时,AutoFixture不会针对抽象类编程,因为这是一个设计错误。

AutoMoqCustomization
可以提供抽象基类和接口。
ADataFeed
的构造函数是公共的吗?如果是这样的话,就让它受到保护。这是一个抽象类上的公共构造函数的设计错误,非常有趣。好的,moq处理抽象类上的公共构造函数。。。autofixture没有。这两种方法都不能与私有构造函数一起工作,并且在私有构造函数受到保护时两者都可以工作。我相信你的话,这是一个设计错误。。。另一天再问一个问题。在此期间,我将使用protected.FTR:这解决了您的问题吗?重要的是,您会得到问题的答案:)关于问题的第二部分,请您自己不要创建抽象类,并且每件事都会简单得多:)“支持对象组合而不是类继承。”