J'écris un étui à tester pour mon contrôle de l'utilisateur qui vous permettra d'utiliser MessageBox.Show pour une action utilisateur demandant à traiter ou à annuler l'opération. Comment puis-je concevoir mon test de l'unité pour imiter l'interaction de l'utilisateur pour continuer? P>
Je ne veux pas refroidir pour déplacer la logique au niveau moyen. Il s'agit d'un cas simple d'obtenir le consentement de l'utilisateur et de procéder à l'appel de niveau moyen. Toute interface utilisateur d'aide / idées de restructuration de ce scénario sera également utile. P>
3 Réponses :
cliquer sur un bouton n'est rien d'autre que d'appeler l'événement correspondant Mieux encore mieux (si ce n'est pas encore le cas), déplacez votre code hors de la frontale et construisez vos informations autour des actions commerciales, vous invoqueriez autrement en cliquant sur un bouton. P> mise à jour après la modification de l'auteur em> strong> Cliquez sur CODE>. Donc, vous voudrez peut-être construire votre test autour de cela.
Vous n'allez pas obtenir cela pour travailler aussi longtemps que vous n'êtes pas prêt à scinder les choses, vous ne pouvez pas construire vos tests d'unité autour de "Cliquez ici", cliquez ici ". Cliquez ici". Imaginez le code suivant: p> private int MyFunction()
{
bool insideVariable = false;
if(insideVariable)
return 1;
else
return 2;
}
Je peux utiliser SendKeys.sendwait des choses similaires, mais le problème ici est showdialog est un appel de blocage
Vous ne devriez pas essayer de faire en cliquant sur le bouton, mais simplement quelque chose comme nouveau formulaire1 (). Bouton1_click (ceci, null) code>.
+1 - Si l'interface utilisateur contient suffisamment de logique, la duplication de son action nécessite réellement l'utilisation du code de l'interface utilisateur, l'interface utilisateur contient trop de logique. Il peut être intéressant de noter des exceptions - la logique de présentation est toujours délicate à cet égard - mais en général, le code testable ne vit pas dans l'interface utilisateur de commencer.
@Jan. J'ai édité ma question. Fondamentalement, j'utilise une simple boîte de messagerie.show (pas un formulaire.Showdisalog car j'avais dit par erreur auparavant). C'est le code de blocage. Je ne pense pas que Form1 (). Bouton1_Cliquez sur NULL) fonctionnera ici.
Fournir une solution serait beaucoup plus facile avec la méthode d'interface utilisateur ou les méthodes associées affichées. Voir également le ou les testerSmethod pourrait aider même des méthodes incomplètes.
Si je comprends que votre objectif de test est de déterminer ce qui se passe sur les différentes possibilités de clic? P>
Vous pouvez configurer votre méthode réelle qui déclenche la puis la méthode de test (rappelez-vous Pour inclure le MessageBox Code> Utilisation de Inversion du contrôle et Injection de dépendance comme ceci: p> à l'aide de Microsoft.Visualstudio.TestTools.Untestest; code> en haut) serait comme ceci: p>
Peut-être que nous pouvons essayer une automatisation ui officiellement de Microsoft? https://msdn.microsoft.com/en-us/library/aa348551.aspx p>
Faites-en un commentaire s'il vous plaît.
Vous voulez donc tester votre contrôle quand ils cliquent sur chacun de ceux-ci? Ou le test lui-même a une boîte de dialogue Blocking MessageBox pour voir si le niveau moyen est sûr de tester?