Runnin NUnit из кода - как вывести результаты на консоль? - PullRequest
0 голосов
/ 11 января 2012

Я запускаю тесты NUnit, используя RemoteTestRunner.В конце я получаю TestResult объект, содержащий результаты.Проект модульного теста компилируется как консольное приложение.Проблема заключается в том, что после выполнения тестов выходные данные каким-то образом перенаправляются, и я не могу распечатать результаты на консоли.

Вот код.Он не выводит ничего , даже "Open, sesame!" (хотя он работает до конца - подтверждено в отладчике).

Есть предложения?

ТакжеЕсть ли встроенный способ перечисления неудачных результатов для экземпляра TestResults?

    public static void Main()
    {
        TestPackage testPackage = new TestPackage(AssemblyPath);
        RemoteTestRunner remoteTestRunner = new RemoteTestRunner();
        remoteTestRunner.Load(testPackage);
        TestResult testResult = remoteTestRunner.Run(null);

        Console.WriteLine(testResult.IsFailure);

        Console.WriteLine("Open, sesame!");

    }
    public static string AssemblyPath
    {
        get
        {
            string codeBase = Assembly.GetExecutingAssembly().CodeBase;
            UriBuilder uri = new UriBuilder(codeBase);
            string path = Uri.UnescapeDataString(uri.Path);
            return path;
        }
    }

1 Ответ

3 голосов
/ 11 января 2012

Пробовали ли вы сохранить текущий поток вывода Консоли перед запуском тестов с помощью

var currentOut = Console.Out;

, а затем сбросить его после выполнения цикла с

Console.SetOut(currentOut);

Кроме того, есть ли встроенный способ для перечисления неудачных результатов с учетом экземпляра TestResults?

Я не смог найти ни одного.Тем не менее, следующий фрагмент кода должен предоставить вам некоторую помощь.Он рекурсивно анализирует составленную структуру TestResult и выводит на консоль результаты каждого теста.

static void OutputResult(TestResult result)
{
    if(result.HasResults)
    {
        foreach (var childResult in result.Results)
        {
            OutputResult((TestResult)childResult);
        }
        return;
    }

    Console.WriteLine("{0}:{1}", result.FullName, result.ResultState);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...