#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
#endif
我所需要做的就是使用NUnit测试属性改变我的方法为TestMethod,然后我就有一个在两种方式下工作的测试代码。
TimeOutAttribute
包含决大部分属性的文档固然非常好。但是,最重要的属性之一,TimeOutAttribute并没有包含在API文档中。当TESTRUNCONFIG 文件允许你指定单元测试的全部超时值时,TimeOutAttribute让你指定一个单独的测试可能花费的最大毫秒数。我发现 TimeOutAttribute在这些联系数据库的测试方法上没有价值,所以我密切注视这些查询。请注意,时间值包含一些测试运行器的时间。另外,机器的速度和性能将影响时间。使用你的测试进行实验来看一下时间选择是怎么在你的系统上工作的。
TestContext类我们只是简要的涉及到,它也是被单元测试向导添加进来的TextContext属性。主要的论述是关于当你正在使用 DataSourceAttribute时通过使用TestContext类获得数据行。TestContext类有很多内容提供。文档显示出 TestContext类标记为抽象,但是事实上支持你的单元测试的源类型是UnitTestAdapterContext,它来自于 Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dl,你可以在< Visual Studio .NET install dir>\Common7\IDE\PrivateAssemblies 中发现这个DLL文件。你可以使用.NET Reflector查看UnitTestAdapterContext以此明白它是如何工作的。
或许这个类支持的最重要的方法就是WriteLine,你可以使用它添加额外的输出到单独的测试结果中。所有的编写都将出现在报告的额外信息部分。为了发现什么测试正在运行或测试开始于什么目录,你可以单个使用TestContext属性域TestName和TestDir。最后,如果你想为所有或部分测试设置时间器,调用TestContext.BeginTimer和TestContext.EndTimer。在标准的控制台输出部分,时间数据将显示在测试运行结果中。
为你写代码
我曾经提到,我已经包含了一个连同它的单元测试一起的真正单元。Bugslayer.Utility.DLL是一个我已经在项目之间拖拽的有用代码集合。 ArgParser类是一个命令行论据分析类,这个类是基于在旧的.NET Framework SDK WordCount例子中的类。SystemMenuForm类是一个Windows窗体,这个窗体允许你在系统菜单中附加项目和作为常规时间回应点击操作。
文章来源于领测软件测试网 https://www.ltesting.net/