En realidad, el siguiente método siempre devuelve un número entero positivo:
var fixture = new Fixture(); var someInt = fixture.Create<int>(); ¿Es posible que algún día la función evolucione y comience a devolver un número entero negativo? ¿O hay una razón oficial por la que en realidad devuelve un número entero siempre positivo?
Si no, ¿hay alguna documentación escondida en algún lugar que lo diga?
Para seguir usando autofixture, me gustaría saber si se prevén cambios.
El autor de Autofixture habla de esto en su blog . Esta publicación especifica que la implementación actual siempre devolverá números positivos ya que se consideran "más seguros" en general, por lo que no creo que esto cambie en el futuro cercano.
El objetivo de AutoFixture es generar datos de prueba anónimos. Estás pidiendo un número entero que puede ser un número negativo. Para estar 100% seguro, no confiaría en la suposición implícita de que todas las implementaciones futuras solo devuelven números positivos. Puede hacer esto más explícito proporcionando un SpecimenBuilder personalizado:
fixture.Customizations.Add(new PositiveIntegerBuilder());
Puede encontrar más información sobre los constructores de especímenes personalizados aquí .
Como señala el usuario prgmtc , una opción es a través de un ISpecimenBuilder personalizado.
Otra opción es proporcionar un rango personalizado, mediante el uso de la clase RandomNumericSequenceGenerator incorporada, como se muestra a continuación:
[Fact] public void FixtureCreatesNegativeNumbers() { var fixture = new Fixture(); fixture.Customizations.Add( new RandomNumericSequenceGenerator(-900, -100)); var i = fixture.Create<int>(); // Prints -> -711 var l = fixture.Create<long>(); // Prints -> 618 var f = fixture.Create<float>(); // Prints -> -78.0 }var i = fixture.Create<uint>();Solo si el código original que se está probando esperaba un parámetro de tipo uint.
¿ var i = Math.Abs(fixture.Create<int>()) para usted?
Para responder a la pregunta original
Asumiría que los autores de AutoFixture no cambiarán algo tan crucial tan a la ligera. Yo usaría fixture.Create<int>