Estoy usando el atributo NUnit 2.5.3 TestCaseSource y estoy creando una fábrica para generar mis pruebas. Algo como esto:NUnit TestCaseSource pasar el valor a la fábrica
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
Mi fuente es la siguiente:
public static IEnumerable<TestCaseData> VariableString
{
get
{
yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Empty_Text");
yield return new TestCaseData(null).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Null_Text");
yield return new TestCaseData(" ").Throws(typeof(PreconditionException))
.SetName("Does_Reject_Whitespace_Text");
}
}
Lo que necesito para ser capaz de hacer es añadir un cheque longitud máxima de la variable de cadena, pero esta longitud máxima se define en los contratos en la clase bajo prueba. En nuestro caso es una estructura pública simple:
public struct ItemLengths
{
public const int Description = 255;
}
No encuentro ninguna forma de pasarle un valor al generador de casos de prueba. Intenté valores compartidos estáticos y estos no se recogen. No quiero guardar cosas en un archivo, ya que necesitaría regenerar este archivo cada vez que cambiara el código.
Quiero añadir la siguiente línea a mi caso_prueba:
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
Algo bastante simple en concepto, pero algo me está resultando imposible de hacer. ¿Alguna sugerencia?