Sto utilizzando l'attributo NUnit 2.5.3 TestCaseSource e la creazione di una factory per generare i miei test. Qualcosa di simile a questo:NUnit TestCaseSource passa il valore alla fabbrica
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
La mia fonte è questa:
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");
}
}
Che cosa ho bisogno di essere in grado di fare è quello di aggiungere un controllo di lunghezza massima di La variabile stringa, ma questa lunghezza massima è definito in i contratti nella classe in esame. Nel nostro caso è una semplice struttura pubblica:
public struct ItemLengths
{
public const int Description = 255;
}
Non riesco a trovare alcun modo di passare un valore al generatore del caso di test. Ho provato valori condivisi statici e questi non vengono raccolti. Non voglio salvare materiale su un file, in quanto poi avrei bisogno di rigenerare questo file ogni volta che il codice cambia.
voglio aggiungere la seguente riga alla mia TestCase:
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
qualcosa di abbastanza semplice nel concetto, ma qualcosa mi sto trovando impossibile da fare. Eventuali suggerimenti?