この記事では、Windows 8開発のためのテストコードの使い方を紹介します。必要な友達は、
1. ソリューションと単体テストプロジェクトを作成する
1) [ファイル] メニューの [新規] を選択し、[新しいプロジェクト] を選択します。
2)「新しいプロジェクト」ダイアログボックスで、「すでにインストールされています」、「ビジュアルC#」を展開し、「Windowsストア」を選択します。次に、プロジェクト テンプレートのリストから「空のアプリケーション」を選択します。 3). プロジェクトに MyTestProject という名前を付け、「ソリューション ディレクトリの作成」が選択されていることを確認します。
4) ソリューションエクスプローラーでソリューション名を選択し、ショートカットメニューから「追加」を選択し、「新しいプロジェクト」を選択します。
5)「新しいプロジェクト」ダイアログボックスで、「インストール済み」、「Visual C#」を展開し、「Windows ストア」を選択します。次に、プロジェクト テンプレートのリストから単体テスト ライブラリ (Windows ストア アプリ) を選択します。
namespace UnitTestLibraryTest{ [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() {</p> <p> } }}次の点に注意してください:
namespace UnitTestLibraryTest { [TestClass] public class UnitTest1 { private int a; private int b;</p> <p> // 当前测试类运行第一个测试方法之前执行,类似于 构造函数 [ClassInitialize] public static void MyClassInit(TestContext context) { } // 所有测试方法运行完毕后执行,类似于 析构函数 [ClassCleanup] public static void MyClass End () { }</p> <p> //每个测试方法运行之前执行 [TestInitialize] public void Init() { a = 1; b = 1; } //每个测试方法运行之后执行 [TestCleanup] public void End() { a = 0; b = 0; }</p> <p> } }注: 上記のメソッドの場合、メソッド名はカスタマイズ可能であり、[ClassInitialize] の関数を除いて戻り値はありません。 TestContext パラメータ、その他にはパラメータがありません。 2. テスト管理リソースでテストが実行されているかどうかを確認します 1). UnitTest1.cs ファイルの TestMethod1 にテスト コードを挿入します。
Static
メソッドが用意されています。
2)「テスト」メニューで「実行」を選択し、「すべて実行」を選択します。 テストプロジェクトが生成され、実行されます。 [テスト エクスプローラー] ウィンドウが表示され、テストが [合格したテスト] の下にリストされます。ウィンドウの下部にある [概要
3. MyTestProject プロジェクトに Rooter クラスを追加します
1) 「ソリューション エクスプローラー」で、「MyTestProject」プロジェクト名を選択します。ショートカット メニューから [追加] を選択し、[クラス] を選択します。 2) クラスファイルに Rooter.cs という名前を付けます。 3).RooterクラスのRooter.csファイルに次のコードを追加します:
コードは次のとおりです:
[TestMethod] public void AddTestMethod() { int a = 1; int b = 2; int sum = a+b; Assert.AreEqual(3,sum); }
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 に追加します:
コードは次のとおりです:public class Rooter { public Rooter() { } public double SquareRoot(double x) { return 0.0; } }
5) テストエクスプローラーで「すべて実行」を選択します。 基本テストに合格しました
テストとコード プロジェクトを設定し、コード プロジェクトで関数を実行するテストを実行できることを確認しました。これで、実際のテストとコードの作成を開始できます。
5. テストを繰り返し追加し、それらのテストに合格します。
1) 新しいテストを追加します:
コードは次のとおりです:[TestMethod] public void Range Test() { Rooter rooter = new Rooter(); for (double v = 1e-6; v < 1e6; v = v * 3.2) { double expected = v; double actual = rooter.SquareRoot(v * v); double tolerance = ToleranceHelper(v); Assert.AreEqual(expected, actual, tolerance); } }</p> <p> 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 d if f = x; while (diff > estimate / 1000) { double prev iousEstimate = 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);</p> <p> 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 < 0.0) { 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; }
在测试资源管理器中,选择“全部运行”以测试已纠正的方法,并确保您未引入回归测试。所有测试都将通过。
【相关推荐】
4. 教你如何在Windows环境下安装python2和python3两个版本
以上がWindows 8 開発用のテスト コードの使用方法に関する詳細なチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。