使用win8测试代码的方法

来源:爱站网时间:2020-12-04编辑:网友分享
对于win8系统的测试代码是不是有很多用户们都不是非常的了解呢,我们要怎么才能更好的使用win8测试代码成为了很多用户们的难题,那么下面我们就去看看使用win8测试代码的方法。

  对于win8系统的测试代码是不是有很多用户们都不是非常的了解呢,我们要怎么才能更好的使用win8测试代码成为了很多用户们的难题,那么下面我们就去看看使用win8测试代码的方法。

  1.创建解决方案和单元测试项目

  1).“文件”菜单上选择“新建”,然后选择“新建项目”。

  2).在“新建项目”对话框中,展开“已安装”、“Visual C#”,选择“Windows Store”。然后从项目模板列表中选择“空白应用程序”。

  3).将项目命名为 MyTestProject,并确保选中“创建解决方案的目录”。

  4).在解决方案资源管理器中,选择解决方案名称,从快捷菜单中选择“添加”,然后选择“新建项目”。

  5).在“新建项目”对话框中,展开“已安装”、“Visual C#”,然后选择“Windows 应用商店”。然后从项目模板列表中选择“单元测试库(Windows Store 应用程序)”。

  注意:是先创建一个项目,然后再这个项目中添加测试项目,这样符合我们在开发中需要对我们的项目进行测试的需求。

  6).在 Visual Studio 编辑器中打开 UnitTest1.cs。

  复制代码

  代码如下:

  namespace UnitTestLibraryTest

  {

  [TestClass]

  public class UnitTest1

  {

  [TestMethod]

  public void TestMethod1()

  {

  }

  }

  }

  注意以下事项:

  a.每个测试都是使用 [TestMethod] 定义的。测试方法必须返回 void,并且不能具有任何参数。在类名前一行,加上[TestClass]的声明.

  b.测试方法必须位于使用 [TestMethod] 特性修饰的类中。运行测试时,将为每个测试类创建一个实例。将按未指定顺序调用测试方法。

  c.您可定义在每个模块、每个类或每个方法前后调用的特定方法。

  d.在文件头部加入using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;的引用。

  7).测试前的初始化及测试后的清理。用法及代码如下:

  复制代码

  代码如下:

  namespace UnitTestLibraryTest

  {

  [TestClass]

  public class UnitTest1

  {

  private int a;

  private int b;

  // 当前测试类运行第一个测试方法之前执行,类似于构造函数

  [ClassInitialize]

  public static void MyClassInit(TestContext context)

  {

  }

  // 所有测试方法运行完毕后执行,类似于析构函数

  [ClassCleanup]

  public static void MyClassEnd()

  {

  }

  //每个测试方法运行之前执行

  [TestInitialize]

  public void Init()

  {

  a = 1;

  b = 1;

  }

  //每个测试方法运行之后执行

  [TestCleanup]

  public void End()

  {

  a = 0;

  b = 0;

  }

  }

  }

  注意:以上方法,方法名可以自定义,无返回值,除了[ClassInitialize]的那个函数有个TestContext的参数外,其他无参数。

  2.验证测试是否在测试管理资源器中运行

  1).在 UnitTest1.cs 文件的 TestMethod1 中插入一些测试代码:

  复制代码

  代码如下:

  [TestMethod]

  public void AddTestMethod()

  {

  int a = 1;

  int b = 2;

  int sum = a+b;

  Assert.AreEqual(3,sum);

  }

  注意,Assert 类提供的若干静态方法可用于验证测试方法的结果。

  2).在“测试”菜单上,选择“运行”,然后选择“全部运行”。

  将生成并运行测试项目。随即显示“测试资源管理器”窗口,并且测试列出在“已通过的测试”下。窗口底部的“摘要”窗格将提供有关所选测试的其他详细信息。

  3.向MyTestProject项目添加Rooter类

  1).在“解决方案资源管理器”中,选择“MyTestProject”项目名称。从快捷菜单中选择“添加”,然后选择“类”。

  2).将类文件命名为 Rooter.cs。

  3).将以下代码添加到 Rooter 类 Rooter.cs 文件中:

  复制代码

  代码如下:

  public class Rooter

  {

  public Rooter()

  {

  }

  public double SquareRoot(double x)

  {

  return 0.0;

  }

  }

  Rooter 类声明一个构造函数和 SqareRoot estimator 方法。

  4).SqareRoot 方法只是一个最小实现,足以为测试设置测试基本结构。

  4.将测试项目合并为应用程序项目

  1).将对 "MyTestProject"应用程序的引用添加到 UnitTestLibraryTest项目中。

  2).向 UnitTest1.cs 文件添加 using 语句:

  a.打开 UnitTest1.cs。

  b.在 using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 行下添加代码:using MyTestProject;

  3).添加使用 Rooter 函数的测试。将下列代码添加到 UnitTest1.cs:

  复制代码

  代码如下:

  [TestMethod]

  public void BasicTest()

  {

  Rooter rooter = new Rooter();

  double expected = 0.0;

  double actual = rooter.SquareRoot(expected * expected);

  double tolerance = .001;

  Assert.AreEqual(expected, actual, tolerance);

  }

  4).生成解决方案。

  新测试将显示在测试资源管理器的“未运行的测试”节点中。

  5).在测试资源管理器中,选择“全部运行”。 已通过基本测试

  您已设置测试和代码项目,并验证了您可在代码项目中运行运行函数的测试。现在您可开始编写真实测试和代码。

  5.以迭代方式增加测试并使这些测试通过。

  1).添加新测试:

  复制代码

  代码如下:

  [TestMethod]

  public void RangeTest()

  {

  Rooter rooter = new Rooter();

  for (double v = 1e-6; v

  {

  double expected = v;

  double actual = rooter.SquareRoot(v * v);

  double tolerance = ToleranceHelper(v);

  Assert.AreEqual(expected, actual, tolerance);

  }

  }

  private double ToleranceHelper(double expected)

  {

  return expected / 3.2;

  }

  提示:建议您不要更改已通过的测试。而是添加新测试,更新代码以便测试通过,然后添加其他测试等。 当您的用户更改其要求时,请禁用不再正确的测试。编写新测试并使它们以相同的增量方式一次运行一个。

  2).在测试资源管理器中,选择“全部运行”。

  3).测试将不会通过。 RangeTest 未通过

  提示:编写测试后,立即验证每个测试是否都将失败。这帮助您避免易犯的错误,不会编写从不失败的测试。

  4).增强受测代码,以便新测试通过。将 Rooter.cs 中的 SqareRoot 函数更改为:

  复制代码

  代码如下:

  public double SquareRoot(double x)

  {

  double estimate = x;

  double diff = x;

  while (diff > estimate / 1000)

  {

  double previousEstimate = estimate;

  estimate = estimate - (estimate * estimate - x) / (2 * estimate);

  diff = Math.Abs(previousEstimate - estimate);

  }

  return estimate;

  }

  5).生成解决方案,然后在测试资源管理器中,选择“全部运行”。

  现在所有三个测试都将通过。

  提示:通过添加测试的方式一次性开发代码。确保所有测试在每次迭代后都通过。

  6.调用未通过的测试

  1).向 UnitTest1.cs 添加另一个测试:

  复制代码

  代码如下:

  [TestMethod]

  public void NegativeRangeTest()

  {

  string message;

  Rooter rooter = new Rooter();

  for (double v = -0.1; v > -3.0; v = v - 0.5)

  {

  try

  {

  // Should raise an exception:

  double actual = rooter.SquareRoot(v);

  message = String.Format("No exception for input {0}", v);

  Assert.Fail(message);

  }

  catch (ArgumentOutOfRangeException ex)

  {

  continue; // Correct exception.

  }

  catch (Exception e)

  {

  message = String.Format("Incorrect exception for {0}", v);

  Assert.Fail(message);

  }

  }

  }

  2).在测试资源管理器中,选择“全部运行”。

  测试将不会通过。在测试资源管理器中选择测试名称。将突出显示失败的断言。失败消息将在测试资源管理器的细节窗格中可见。NegativeRangeTests 未通过。

  3).若要查看测试未通过的原因,请单步执行以下函数:

  a.在 SquareRoot 函数的开头设置断点。

  b.在未通过测试的快捷菜单上,选择“调试选定的测试”。 当运行在断点处停止时,请单步执行以下代码。

  c.向 Rooter 方法添加代码以捕获异常,将SquareRoot方法修改如下(对x进行判断捕获异常):

  复制代码

  代码如下:

  public double SquareRoot(double x)

  {

  if (x

  {

  throw new ArgumentOutOfRangeException();

  }

  double estimate = x;

  double diff = x;

  while (diff > estimate / 1000)

  {

  double previousEstimate = estimate;

  estimate = estimate - (estimate * estimate - x) / (2 * estimate);

  diff = Math.Abs(previousEstimate - estimate);

  }

  return estimate;

  }

  在测试资源管理器中,选择“全部运行”以测试已纠正的方法,并确保您未引入回归测试。所有测试都将通过。

  上文就是小编为大家介绍使用win8测试代码的方法,如果用户们不知道怎么使用测试代码,可以参考上述方法步骤进行操作哦

上一篇:win8系统如何设置打印机

下一篇:Windows8中的常见疑问

您可能感兴趣的文章

相关阅读

查看更多 >

热门软件源码

最新软件源码下载