Sto scrivendo un parser e, come parte di ciò, ho una classe Expander
che "espande" una singola istruzione complessa in più semplici istruzioni. Ad esempio, espanderebbe questo:
x = 2 + 3 * a
in:
tmp1 = 3 * a
x = 2 + tmp1
Ora sto pensando a come testare questa classe, in particolare come organizzare i test. Potrei creare manualmente l'albero della sintassi di input:
var input = new AssignStatement(
new Variable("x"),
new BinaryExpression(
new Constant(2),
BinaryOperator.Plus,
new BinaryExpression(new Constant(3), BinaryOperator.Multiply, new Variable("a"))));
Oppure potrei scriverlo come una stringa e analizzarlo:
var input = new Parser().ParseStatement("x = 2 + 3 * a");
La seconda opzione è molto più semplice, più breve e leggibile. Ma introduce anche una deneglianza su Parser
, il che significa che un errore in Parser
potrebbe fallire questo test. Quindi, il test smetterebbe di essere un test unitario di Expander
, e credo che tecnicamente diventi un test di integrazione di Parser
e Expander
.
La mia domanda è: è corretto affidarsi principalmente (o completamente) a questo tipo di test di integrazione per testare questa classe Expander
?