J'utilise C# à des fins de test. Un test consiste en plusieurs étapes de test. Si une étape de test échoue, l'ensemble du test doit être annulé. Une étape de test pourrait ressembler à ceci:Renvoie la fonction appelante
Variable1.Value = 1;
Variable1.write();
Variable1.read();
if (Variable1.Value != 1)
{
Console.WriteLine("Fail");
return; //this return aborts the test
}
//next test steps
Je voudrais transférer certaines commandes dans les fonctions propres pour permettre une programmation efficace des cas de test. La fonction pour le code ci-dessus ressemblerait à ceci.
private void verifyValue (TypeOfVariable Var, double Value)
{
Var.read();
if (Var.Value != Value)
{
Console.WriteLine("Fail");
return;
}
}
Et le test ressemblerait à ceci
Variable1.Value = 1;
Variable1.write();
verifyValue(Variable1, 1);
//next test steps
Mon problème est maintenant que la return
en fonction verifyValue
seulement des effets verifyValue
mais pas la fonction appelante (alias test).
Est-il possible d'abandonner la fonction d'appel?
Y at-il une raison pour laquelle vous n'utilisez pas un framework de test unitaire et 'Assert'? –
Vous essayez d'implémenter une opération atomique à l'aide des instructions de retour et de l'achèvement de la fonction. Je pense que ce n'est pas une très bonne approche. Au lieu de cela, vous pouvez implémenter des classes qui exécutent toutes les instructions en tant que transaction et, en fonction des exceptions qu'elles lancent, vous pouvez abandonner ou poursuivre l'opération. – Slavo
Sauf si votre exemple est très mauvais, je suis d'accord avec @Slavo. Ce n'est pas comment mettre en œuvre ce que vous essayez d'accomplir. En disant cela, une option coûteuse, mais possible, est de jeter une exception. –