Как программно запустить модульные тесты с Gallio и MBUnit?

Я пытаюсь программно проверить, что мои модульные тесты проходят как часть моего процесса развертывания. Приложение использует MBunit и Gallio для своей среды модульного тестирования.

Вот мой код:

var setup = new Gallio.Runtime.RuntimeSetup();
setup.AddPluginDirectory(@"C:\Program Files\Gallio\bin");

using (TextWriter tw = new StreamWriter(logFilename))
{
    var logger = new Gallio.Runtime.Logging.TextLogger(tw);
    RuntimeBootstrap.Initialize(setup, logger);

    TestLauncher launcher = new TestLauncher();                
    launcher.AddFilePattern(dllToRunFilename);
    TestLauncherResult result = launcher.Run();
}

Вот тест, который содержится в DLL, которую я загружаю (я проверил, что это работает с тестовым прогоном Icarus):

public class Tests
    {
        [Test]
        public void Pass()
        {            
            Assert.IsTrue(true);
        }

        [Test]
        public void Fail()
        {
            Assert.Fail();
        }
    }

Когда я запускаю приложение, я получаю следующие значения в results

Что неверно, так как тесты действительно есть! В файле журнала есть следующее

Отключенный плагин "Gallio.VisualStudio.Shell90": условие включения плагина не выполнено. Обратите внимание, что это предназначенное поведение для плагинов, которые должны быть размещены в сторонних приложениях для работы. Включите условие: '${process:DEVENV.EXE_V9.0} или ${process:VSTESTHOST.EXE_V9.0} или ${process:MSTEST.EXE_V9.0} или ${framework:NET35}'. Отключенный плагин "Gallio.VisualStudio.Tip90": плагин зависит от другого отключенного плагина: "Gallio.VisualStudio.Shell90".

Как мне решить эту проблему и найти результаты тестов?

2 ответа

Решение

Это работает для меня, обратите внимание, что я использовал этот nuget GallioBundle, чтобы получить gallio и mbunit, так что, возможно, есть какая-то разница с тем, что вы установили.

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

using System;
using System.IO;
using Gallio.Runner;
using Gallio.Runtime;
using Gallio.Runtime.Logging;
using MbUnit.Framework;

public static class Program
{
    public static void Main()
    {
        using (TextWriter tw = new StreamWriter("RunTests.log"))
        {
            var logger = new TextLogger(tw);
            RuntimeBootstrap.Initialize(new RuntimeSetup(), logger);

            TestLauncher launcher = new TestLauncher();
            launcher.AddFilePattern("RunTests.exe");
            TestLauncherResult result = launcher.Run();
            Console.WriteLine(result.ResultSummary);
        }
    }
}

public class Tests
{
    [Test]
    public void Pass()
    {
        Assert.IsTrue(true);
    }

    [Test]
    public void Fail()
    {
        Assert.Fail();
    }
}

Проверено так:

› notepad RunTests.cs
› nuget.exe install -excludeversion GallioBundle
  Installing 'GallioBundle 3.4.14.0'.
  Successfully installed 'GallioBundle 3.4.14.0'.
› cd .\GallioBundle\bin
› csc ..\..\RunTests.cs /r:Gallio.dll /r:MbUnit.dll
  Microsoft (R) Visual C# Compiler version 12.0.21005.1
  for C# 5
  Copyright (C) Microsoft Corporation. All rights reserved.    
› .\RunTests.exe
  2 run, 1 passed, 1 failed, 0 inconclusive, 0 skipped

Это инструкция для запуска тестов MBUnit в Visual Studio 2012 и выше с использованием аккуратного трюка NUnit.

Во-первых, установите расширение NUnit Test Adapter (да, NUnit)

  • Инструменты> Расширения и обновления> Онлайн> поиск NUnit > установить тестовый адаптер NUnit.
  • Возможно, вам придется перезапустить Visual Studio IDE.

Затем вам просто нужно добавить новый атрибут теста NUnit в ваши методы тестирования. Смотрите пример кода здесь (обратите внимание на операторы использования вверху) ...

//C# example
using MbUnit.Framework;
using NuTest = NUnit.Framework.TestAttribute;

namespace MyTests
{
    [TestFixture]
    public class UnitTest1
    {
        [Test, NuTest]
        public void myTest()
        {
            //this will pass
        }
    }
}

Вы можете запустить и отладить тест в Visual Studio, так как NUnit и Gallio Icarus GUI Test Runner будут запускать их как MBUnit (например, разрешить параллельный запуск). Вам нужно будет запретить Gallio запускать тесты NUnit, удалив папку NUnit в месте установки gallio, например C:\Program Files\Gallio\bin\NUnit

Другие вопросы по тегам