如何用Gallio和MBUnit以编程方式运行单元测试?

Lia*_*ath 7 c# mbunit unit-testing gallio visual-studio-2012

我正在尝试以编程方式检查我的单元测试是否正在作为部署过程的一部分传递.该应用程序使用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();
}
Run Code Online (Sandbox Code Playgroud)

这是我正在加载的DLL中包含的测试(我已经验证了这适用于Icarus测试运行器):

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

        [Test]
        public void Fail()
        {
            Assert.Fail();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我得到以下值 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'.

如何解决此问题并找到测试结果?

Lea*_*and 4

这对我有用,请注意,我使用这个GallioBundle nuget 来获取 gallio 和 mbunit,所以也许与您安装的内容有一些不同。

\n\n

有关插件的日志消息是预期的,如果您自行托管 Gallio 运行时,这些插件将无法工作。

\n\n
using System;\nusing System.IO;\nusing Gallio.Runner;\nusing Gallio.Runtime;\nusing Gallio.Runtime.Logging;\nusing MbUnit.Framework;\n\npublic static class Program\n{\n    public static void Main()\n    {\n        using (TextWriter tw = new StreamWriter("RunTests.log"))\n        {\n            var logger = new TextLogger(tw);\n            RuntimeBootstrap.Initialize(new RuntimeSetup(), logger);\n\n            TestLauncher launcher = new TestLauncher();\n            launcher.AddFilePattern("RunTests.exe");\n            TestLauncherResult result = launcher.Run();\n            Console.WriteLine(result.ResultSummary);\n        }\n    }\n}\n\npublic class Tests\n{\n    [Test]\n    public void Pass()\n    {\n        Assert.IsTrue(true);\n    }\n\n    [Test]\n    public void Fail()\n    {\n        Assert.Fail();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试如下:

\n\n
using System;\nusing System.IO;\nusing Gallio.Runner;\nusing Gallio.Runtime;\nusing Gallio.Runtime.Logging;\nusing MbUnit.Framework;\n\npublic static class Program\n{\n    public static void Main()\n    {\n        using (TextWriter tw = new StreamWriter("RunTests.log"))\n        {\n            var logger = new TextLogger(tw);\n            RuntimeBootstrap.Initialize(new RuntimeSetup(), logger);\n\n            TestLauncher launcher = new TestLauncher();\n            launcher.AddFilePattern("RunTests.exe");\n            TestLauncherResult result = launcher.Run();\n            Console.WriteLine(result.ResultSummary);\n        }\n    }\n}\n\npublic class Tests\n{\n    [Test]\n    public void Pass()\n    {\n        Assert.IsTrue(true);\n    }\n\n    [Test]\n    public void Fail()\n    {\n        Assert.Fail();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n