C#。 在MS Visual Studio中创建单元测试的示例

  1. 内容
  2. 执行
  3. 2.准备Program.cs模块文本
  4. 2.2。 使程序类公开
  5. 3.测试程序的列表
  6. 4.创建测试
  7. 4.1。 将新项目添加到解决方案中
  8. 4.2。 解决方案结构
  9. 4.3。 文件“UnitTest1.cs”的文本。 属性[TestMethod]和[TestClass]
  10. 4.4。 更改UnitTest1模块的文本。 更改测试方法的名称
  11. 4.5。 将MinApp项目连接到TestMinApp项目
  12. 4.6。 更改模块UnitTest1.cs的文本
  13. 4.6.2。 TestMin()方法文本
  14. 4.7。 UnitTest1.cs模块文本
  15. 5.运行测试并检查测试结果
  16. 6.结果。 项目之间的互动

本主题描述了在Microsoft Visual Studio 2010(C#)中为控制台应用程序等应用程序创建简单单元测试的分步过程。 使用此示例,您可以了解如何创建自己的单元测试。 该示例还演示了如何使用Assert类来测试函数的操作。

内容

问题的条件

对于像Console Application这样的应用程序,开发一个单元测试来测试Min()函数的操作,该函数确定三个数字的最大元素。

对于Min()函数,将测试方法设置为TestMin()。 检查功能。

执行

1.使用Console Applicaiton模板创建应用程序

运行MS Visual Studio 2010以执行。要使用控制台应用程序模式创建项目,必须调用以下命令序列:

文件 - >新建 - >项目......

结果,将打开“新建项目”窗口。 在窗口中,选择Console Application模板,如图1所示。在Visual C#选项卡中选择模板。

Visual C# - >控制台应用程序

Visual C# - >控制台应用程序

图。 1.窗口“新项目”。 选择Console Application等应用程序

2.准备Program.cs模块文本

2.1。 将Min()函数添加到模块文本

在Program类的主体中,添加Min()函数的文本。

该函数声明为public(static)和public。 Min()函数文本

public static int Min(int a,int b,int c){int min = a; if(min> b)min = b; if(min> c)min = c; 回归分钟; }

public static int Min(int a,int b,int c){int min = a;  if(min> b)min = b;  if(min> c)min = c; 回归分钟;  }

图。 2. MS Visual Studio 2010窗口的视图,模块“Program.cs”

2.2。 使程序类公开

为了能够访问Program类的Min()函数,您需要公开此类。 为此,在声明类之前,您需要定义public关键字。

...命名空间MinApp {public class Program {// class methods // ...}} ...

之后,测试程序就绪。

3.测试程序的列表

目前,正在测试的程序列表如下:

使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text; namespace MinApp {public class Program {public static int Min(int a,int b,int c){int min = a; if(min> b)min = b; if(min> c)min = c; 回归分钟; static void Main(string [] args){Console.WriteLine(“C#中的单元测试演示。”); }}}

由于该程序将从另一个测试模块进行测试,因此无需在Main()函数中输入任何其他内容。 因为,根据问题的条件,您需要测试Min()函数的操作。 这将通过测试模块完成。 目前,我们的计划已准备好进行测试。

4.创建测试

测试由解决方案中的单独项目(Project)创建(解决方案)。 正在测试的程序不知道它。 将测试的程序(测试程序)将调用正在测试的程序的功能。 在我们的例子中,测试程序将调用该函数

int Min(int,int,int);

4.1。 将新项目添加到解决方案中

对于此解决方案(解决方案),您需要使用该命令添加新项目

文件 - >添加 - >新项目......

创建新项目的窗口如图3所示。

图。 3.用于创建Test Project类型的项目的窗口

在窗口中选择一组Visual C#模板 - > Test。 从显示的模板中,选择“测试项目”项目模板。 在“名称”字段中,指示将测试我们的程序的项目的名称。 例如,您需要设置TestMinApp。 该项目位于单独的文件夹“E:\ Test \ MinApp”中。

在窗口中选择一组Visual C#模板 - > Test。 从显示的模板中,选择“测试项目”项目模板。 在“名称”字段中,指示将测试我们的程序的项目的名称。 例如,您需要设置TestMinApp。 该项目位于单独的文件夹“E:\ Test \ MinApp”中。

图。 4. UnitTest1.cs模块的文本。 显示TestMinApp和MinApp项目的解决方案资源管理器实用程序窗口

4.2。 解决方案结构

从图4中可以看出,Solution Explorer实用程序显示了Solution Items结构,其中包含两个项目:

  • 项目MinApp。 这是使用控制台应用程序模板创建的项目,其中包含您要抗议的Min()函数;
  • TestMinApp项目。 该项目旨在测试MinApp项目的功能。 测试Min()函数的程序代码将输入TestMinApp项目的UnitTest1项目文件中。

两个项目都可以相互独立地进行。

4.3。 文件“UnitTest1.cs”的文本。 属性[TestMethod]和[TestClass]

在TestMinApp项目中,测试文件UnitTest1.cs是主要关注点。 该文件包含将测试MinApp项目功能的方法。 TestMinApp项目可以包含任意数量的包含测试的文件(例如,UnitTest2.cs,UnitTest3.cs等)。

MS Visual Studio 2010生成的UnitTest1.cs文件列表如下:

使用系统; 使用System.Text; 使用System.Collections.Generic; 使用System.Linq; 使用Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// UnitTest1的摘要描述/// </ summary> [TestClass] public class UnitTest1 {public UnitTest1(){// // TODO:在这里添加构造函数逻辑//} private TestContext testContextInstance; /// <summary> ///获取或设置测试上下文。 /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; #region其他测试属性//您可以使用测试// //使用ClassInitialize // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext){} // //使用ClassCleanup在类中的所有测试运行后运行代码// [ClassCleanup()] // public static void MyClassCleanup(){} // //使用TestInitialize在运行每个测试之前运行代码// [TestInitialize()] // public void MyTestInitialize(){} // //使用TestCleanup ){} // #endregion [TestMethod] public void TestMethod1(){// // TODO:在这里添加测试逻辑//}}}

从上面的代码可以看出,该文件包含一个名为UnitTest1的类。 该类有一个名为TestMethod1()的公共方法。 在实现TestMethod1()方法之前,放置[TestMethod]属性。 这意味着您需要输入将在方法体中测试MinApp项目功能的代码。

在类中,您可以输入任意数量的方法来测试不同模块中的不同函数。 主要的是这些方法用[TestMethod]属性标记。

4.4。 更改UnitTest1模块的文本。 更改测试方法的名称

您可以更改方法的名称,并添加在UnitTest1.cs模块中使用[TestMethod]属性标记的新方法。 鉴于此,在UnitTest1.cs模块的文本中,您需要将TestMethod1()方法重命名为TestMin()。

进行更改后,UnitTest1.cs文件的模块的缩写文本将为:

使用系统; 使用System.Text; 使用System.Collections.Generic; 使用System.Linq; 使用Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// UnitTest1的摘要描述/// </ summary> [TestClass] public class UnitTest1 {... [TestMethod] public void TestMin(){// // TODO:Add test逻辑在这里//}}}

4.5。 将MinApp项目连接到TestMinApp项目

要从TestMinApp项目访问Min()函数(MinApp项目),您需要连接此函数所在的命名空间。

要做到这一点,首先,您需要调用TestMinApp项目的上下文菜单。 然后在上下文菜单中,您需要调用命令“Add Reference ...”(图5)。

”(图5)。

图。 5.团队“Add Referencse ...”

因此,将打开“添加引用”窗口,您需要在其中选择MinApp项目。

图。 6.窗口“添加引用”。 连接项目MinApp

完成操作后,MinApp项目功能将可用于TestMinApp项目。

完成操作后,MinApp项目功能将可用于TestMinApp项目。

图。 7.带有连接的MinApp项目的引用选项卡

4.6。 更改模块UnitTest1.cs的文本
4.6.1。 将MinApp命名空间添加到UnitTest1.cs模块

在此步骤中,在UnitTest1.cs模块中,您需要使用using指令添加MinApp命名空间:

使用系统; 使用System.Text; 使用System.Collections.Generic; 使用System.Linq; 使用Microsoft.VisualStudio.TestTools.UnitTesting; 使用MinApp; 命名空间TestMinApp {...}

4.6.2。 TestMin()方法文本

在TestMin()方法的文本中,输入以下代码:

... [TestMethod] public void TestMin(){// // TODO:在这里添加测试逻辑// int min; min = Program .Min(3,4,5); 断言.AreEqual(2,min); } ...

4.7。 UnitTest1.cs模块文本

整个UnitTest1.cs模块的文本如下:

使用系统; 使用System.Text; 使用System.Collections.Generic; 使用System.Linq; 使用Microsoft.VisualStudio.TestTools.UnitTesting; 使用MinApp; namespace TestMinApp {/// <summary> /// UnitTest1的摘要描述/// </ summary> [TestClass] public class UnitTest1 {public UnitTest1(){// // TODO:在这里添加构造函数逻辑//} private TestContext testContextInstance; /// <summary> ///获取或设置测试上下文。 /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = value; #region其他测试属性//您可以使用测试// //使用ClassInitialize // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext){} // //使用ClassCleanup在类中的所有测试运行后运行代码// [ClassCleanup()] // public static void MyClassCleanup(){} // //使用TestInitialize在运行每个测试之前运行代码// [TestInitialize()] // public void MyTestInitialize(){} // //使用TestCleanup ){} // #endregion [TestMethod] public void TestMin(){// // TODO:在这里添加测试逻辑// int min; min = Program .Min(3,4,5); 断言.AreEqual(2,min); }}}

5.运行测试并检查测试结果

在Microsoft Visual Studio 2010中,实现了一个名为Test的特殊命令菜单,用于处理单元测试。

要运行执行测试,请选择其中一个命令。

测试 - >运行 - >在当前上下文中测试

测试 - >运行 - >解决方案中的所有测试

如图8所示。

图。 8.调用start test命令并查看结果。

运行测试后,可以在“测试结果”窗口的底部查看结果。 从图中可以看出,测试没有通过。 这是合乎逻辑的,因为在Assert.AreEqual()函数中,我们比较数字2和3,它们是不同的。 这里,特别引入数字2而不是3。

如果不是数字2,则输入正确答案 - 数字3(最小值在3,4,5之间),然后测试将通过(图9)。 在这种情况下,TestMin()方法的文本如下:

... [TestMethod] public void TestMin(){// // TODO:在这里添加测试逻辑// int min; min = Program .Min(3,4,5); 断言.AreEqual(3,min); } ...

结果窗口如图9所示。

图。 9.如果输入正确的答案,则为案例的测试结果

现在我们可以得出结论,这种情况的Min()函数可以正常工作。

6.结果。 项目之间的互动

在本文中,解决方案中形成了两个项目。 一个MinApp项目包含您要测试的Min()函数。 第二个项目TestMinApp包含测试方法。

在Microsoft Visual Studio 2010中,使用不同的菜单命令启动每个项目。 因此,MinApp项目是从Run菜单以标准方式启动的。 TestMinApp项目是从特殊的Test菜单启动的。

相关主题