В конце концов я решил проблему следующим образом:
[Property(Arbitrary = new[] { typeof(MyArbitraries) })]
public void ValueBetweenMinAndMax((DateTimeOffset minValue, DateTimeOffset maxValue) bounds)
{
// ...
}
public static class MyArbitraries
{
public static Arbitrary<(DateTimeOffset minValue, DateTimeOffset maxValue)> DateTimeOffsetBounds()
{
return (from minValue in Arb.Generate<DateTimeOffset>()
from maxValue in Arb.Generate<DateTimeOffset>()
where minValue <= maxValue
select (minValue, maxValue))
.ToArbitrary();
}
}
Я хотел, чтобы параметры теста соответствовали сигнатуре sut, чтобы сделать тест как можно более простым для понимания.Параметры предварительной обработки отвлекли бы от того, что я на самом деле хотел протестировать.
Тем не менее, альтернатива, указанная @Ruben, все еще хороша.