Question

Quels sont les moyens peut être le SampleConfirmationDialog unité testée? Le SampleConfirmationDialog serait exercé par des tests d'acceptation, mais comment pourrait-on tester l'unité elle, car MessageBox n'est pas abstraite et pas d'interface correspondant?

public interface IConfirmationDialog
{
    /// <summary>
    /// Confirms the dialog with the user
    /// </summary>
    /// <returns>True if confirmed, false if not, null if cancelled</returns>
    bool? Confirm();
}


/// <summary>
/// Implementation of a confirmation dialog
/// </summary>
public class SampleConfirmationDialog : IConfirmationDialog
{
    /// <summary>
    /// Confirms the dialog with the user
    /// </summary>
    /// <returns>True if confirmed, false if not, null if cancelled</returns>
    public bool? Confirm()
    {
        return MessageBox.Show("do operation x?", "title", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes;
    }
}
Était-ce utile?

La solution

Vous ne pouvez pas, il est invérifiable dans l'état actuel de ce. il est pour cette classe particulière, il y a aussi pas de valeur dans l'unité de le tester ... mais une enveloppe de lumière autour d'une fonction intégrée de cadre, tout ce que vous feriez est de tester le cadre.

Si vous devez absolument tester, l'interface IConfirmationDialog devrait avoir une autre dépendance que vous pouvez railler dans le test unitaire.

Autres conseils

Vous devriez examiner Typemock, un cadre moqueur commercial qui permet de vous tester l'unité de ce genre de situations en utilisant les bibliothèques de profilage des performances .NET. Voir leur site pour plus d'informations.

Je pense qu'il est OK pour arrêter le tester à ce niveau. Votre interaction avec IConfirmationDialog est plus important que de vérifier que MessageBox.Show est en fait s'appeler. Puisque c'est une interface et est facilement mockable, je pense que vous êtes assez bien couvert.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top