У меня есть интерфейс IAudioProcessor
с единственным методом IEnumerable
. Хотя это не является требованием самого интерфейса, я хочу убедиться, что все мои реализации следуют некоторым общим правилам, например:
Это Нетрудно создать для них тесты, но мне пришлось бы копировать и вставлять эти тесты для каждой реализации. Я бы хотел этого избежать.
Я хотел бы сделать что-то подобное (обратите внимание на атрибут GenericTest
и параметр типа):
[GenericTest(typeof(AudioProcessorImpl1Factory))]
[GenericTest(typeof(AudioProcessorImpl2Factory))]
[GenericTest(typeof(AudioProcessorImpl3Factory))]
public class when_processed_audio_is_returned<TSutFactory>
where TSutFactory : ISutFactory<IAudioProcessor>, new()
{
static IAudioProcessor Sut = new TSutFactory().CreateSut();
protected static Context _ = new Context();
Establish context = () => _.Original = Substitute.For<IEnumerable<ISample>>();
Because of = () => Sut.Process(_.Original);
It should_not_have_enumerated_the_original_samples = () =>
{
_.Original.DidNotReceive().GetEnumerator();
((IEnumerable)_.Original).DidNotReceive().GetEnumerator();
};
}
Возможно ли что-то подобное?