2008-10-31 6 views
1

Je le code suivant:le code Refactor TraceListener il peut donc être testé unitairement

private static void WriteStartupInfo() 
    { 
     Settings settings = Settings.Default; 
     TimeSpan interval = settings.CleanupInterval; 
     TimeSpan span = settings.ExpiryTimeSpan; 
     string url = settings.TeamFoundationServerUrl; 
     StringBuilder sb = new StringBuilder(); 
     sb.Append(String.Format("CleanupInterval:{0}{1}", interval,Environment.NewLine)); 
     sb.Append(String.Format("ExpiryTimeSpan:{0}{1}", span,Environment.NewLine)); 
     sb.Append(String.Format("TeamFoundationServerUrl:{0}{1}", url,Environment.NewLine)); 
     Trace.TraceInformation(sb.ToString()); 
    } 

Cela doit être testé. Comment puis-je tester cette unité?

Est-ce aussi simple que de supprimer des écouteurs de trace et d'ajouter un écouteur de test de trace unitaire?

Toute aide sera grandement appréciée.

Répondre

2

Cela dépend de ce que vous testez. Vous pouvez diviser la méthode en plusieurs méthodes afin que vous puissiez tester la fonctionnalité importante. Par exemple, si vous voulez tester la chaîne créée, placez-la dans une fonction séparée!

private static void WriteStartupInfo() 
{ 
    Trace.TraceInformation(GetStartupInfoString()); 
} 

private static String GetStartupInfoString() { 
    Settings settings = Settings.Default; 
    TimeSpan interval = settings.CleanupInterval; 
    TimeSpan span = settings.ExpiryTimeSpan; 
    string url = settings.TeamFoundationServerUrl; 
    StringBuilder sb = new StringBuilder(); 
    sb.Append(String.Format("CleanupInterval:{0}{1}", interval,Environment.NewLine)); 
    sb.Append(String.Format("ExpiryTimeSpan:{0}{1}", span,Environment.NewLine)); 
    sb.Append(String.Format("TeamFoundationServerUrl:{0}{1}", url,Environment.NewLine)); 
    return sb.ToString(); 
} 

Maintenant, la chaîne peut être testée indépendamment - je dirais que la fonction WriteStartupInfo() est trivial à ce moment-là, et vous n'avez pas besoin de tester la fonctionnalité de trace.

Notez que vous devrez peut-être jouer avec la portée des méthodes - je n'ai pas travaillé avec des méthodes privées de test, donc je ne peux pas aider là.

+0

D'accord, ça a l'air sympa. Merci. – KeesDijk