Visual C# 2010 Express有单元测试功能吗?
Visual C# 2010 Express有单元测试功能吗?
没有内置的工具,但你总可以使用 nUnit。
MSTest 随 Pro 版本及以上一同打包。
在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);
}
}
}
Assembly.GetAssembly(typeof(MyAssembly.MyType)).Location
来将程序集源到测试运行器。 - cod3monk3y现在Visual Studio 2013 Express中已经包含了以下内容:http://msdn.microsoft.com/en-us/library/dd264975.aspx
如果测试资源管理器(Test Explorer)未显示,请选择Visual Studio菜单上的测试(Test),选择窗口(Windows),然后选择测试资源管理器(Test Explorer)。
python -m unittest discover
for python and jasmine/karma for JS)。很高兴看到这成为新开发者工具包的一部分。 - cod3monk3yVisual Studio Express for Desktop
,自2010年以来,VS套件已经完全重建,更准确地反映了“大兄弟”的特点。请看一下 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类可以用来检索有关执行的测试的信息,因此该库也可以用于自定义单元测试应用程序。
(注:我知道这篇文章有点旧了,但这可能会对某些人有所帮助)
如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)