Рефакторинг кода traceListener, чтобы его можно было тестировать модулем - PullRequest
1 голос
/ 31 октября 2008

У меня есть следующий код:

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());
    }

Это нужно проверить. Как мне это проверить?

Это так же просто, как удалить слушателей трассировки и добавить слушателя трассировки модульного теста?

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 31 октября 2008

Это зависит от того, что вы тестируете. Вы можете разбить метод на несколько методов, чтобы протестировать важные функции. Например, если вы хотите проверить построенную строку, перетащите ее в отдельную функцию!

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();
}

Теперь строку можно проверить независимо - я бы сказал, что функция WriteStartupInfo () в этот момент тривиальна, и вам не нужно тестировать функциональность Trace.

Обратите внимание, что вам, возможно, придется поработать с областью применения методов - я не работал с тестированием частных методов, поэтому не могу помочь в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...