繁体   English   中英

Visual C#2010 Express中的单元测试?

[英]Unit testing in Visual C# 2010 Express?

Visual C#2010 Express是否具有单元测试功能?

如上所述,Express版本没有任何内置功能,也不允许使用此功能的加载项,但您可以使用外部工具,例如NUnit

您还可以在Visual Studio Express中设置从“工具 - >外部工具”菜单选项运行的命令,并根据需要运行测试运行器。

是一个链接,显示如何使用VS C#2008 Express,(向下滚动到最后),但我认为它也适用于2010年。

这是一个新的工作链接。

什么都没有内置,但你总是可以使用nUnit。

MSTest与专业版及以上版本捆绑在一起。

在2010年,可以使用外部应用程序,但调试单元测试变得困难。 如果你想使用NUnit调试可能是最好的路线(但不是唯一的选择,请参阅ExpressUnit )。 在另一个SO线程上看到这个答案。 它链接到一个博客 ,该博客提到将测试项目作为控制台应用程序运行并直接调用nunit库dll来启动测试:

using System;

namespace RunTests
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            var args = new string[] { Assembly.GetExecutingAssembly().Location, "/run" };
            NUnit.Gui.AppEntry.Main(args);
        }
    }
}

Visual Studio Express版本具有限制,即插件/插件明显不允许使用。 它们没有附带内置测试解决方案,您无法添加一个。

您最好/唯一的选择是使用独立的测试运行器,例如nUnit,mspec等......并从VSE外部运行它。

现在包含在Visual Studio 2013 Express中: http//msdn.microsoft.com/en-us/library/dd264975.aspx

如果看不到Test Explorer ,请在Visual Studio菜单上选择Test ,选择Windows ,然后选择Test Explorer

在此输入图像描述

作为更新,我目前正在使用Visual Studio Express for Desktop ,VS套件自2010年以来已经完全改造,更准确地反映了“大哥”。

单元测试现在作为内置功能提供,并且以与Visual Studio非Express相同的方式(我没有测试过所有功能)。

您始终可以在项目中使用Main()方法设置一个附加类,并将其选择为项目中的启动对象,然后从那里进行调试。 它可能不适用于执行更复杂任务的情况,因为您无法利用更多特定于测试的功能,但在某些更简单的项目中可能会有用。 如果您的项目是类库,请考虑将其转换为控制台应用程序,然后在完成测试后将其切换回来。

(注意:我知道这篇文章很老了,但这可能对某人有帮助)

正如Andy上面发布的那样,你可以使用NUnit
但是Andy发布的链接中的设置在VS C#2010中不再起作用。
以下是我在“外部工具”窗口中使用的设置:

命令: C:\\ Program Files(x86)\\ NUnit 2.6.2 \\ bin \\ nunit-x86.exe
bin目录中还有一个nunit.exe

参数: $(ProjectDir)$(ProjectFileName)
初始目录: $(ProjectDir)bin / Debug / $(TargetName)$(TargetExt)

看看codeplex上的NHarness ,这是一个非常简单的库,允许您在测试项目中运行NUnit测试夹具。 这使您能够在需要时通过单元测试进行调试

测试运行器的示例(来自codeplex页面)如下所示

    public class RunTests
    {
        public static void Main(string[] args)
        {
            TestResults results = Tester.RunTestsInClass<Tests>();

            Console.WriteLine("Tests Run: {0}", results.NumberOfResults);
            Console.WriteLine("Results {0}:PASSED {1}:FAILED", results.NumberOfPasses, results.NumberOfFails);
            Console.WriteLine("Details:");

            foreach (TestResult result in results)
            {
                Console.WriteLine("Test {0}: {1} {2}",
                                            result.MethodName,
                                            result.Result,
                                            result.Result == TestResult.Outcome.Fail ? "\r\n" + result.Message : "");
            }

            Console.ReadLine();
        }
    }

此库的好处是TestResults类可用于检索有关所执行测试的信息,因此该库也可用于自定义单元测试应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM