In diesem Artikel wird erläutert, wie Sie Testcode für die Windows 8-Entwicklung verwenden. Freunde in Not können sich auf
1. Lösungen und KomponententestsProjekte
1) beziehen Wählen Sie dann „Neues Projekt“.
2) Erweitern Sie im Dialogfeld „Neues Projekt“ „Installiert“, „Visual C#“ und wählen Sie „Windows Store“. Wählen Sie dann „Leere Bewerbung“ aus der Liste der Projektvorlagen aus.
3) Benennen Sie das Projekt „MyTestProject“ und stellen Sie sicher, dass „Lösungsverzeichnis erstellen“ ausgewählt ist.
4) Wählen Sie im Projektmappen-Explorer den Lösungsnamen aus, wählen Sie „Hinzufügen“ aus dem Kontextmenü und dann „Neues Projekt“.
5) Erweitern Sie im Dialogfeld „Neues Projekt“ „Installiert“, „Visual C#“ und wählen Sie dann „Windows Store“. Wählen Sie dann Unit Test Library (Windows Store App) aus der Liste der Projektvorlagen aus.
Hinweis: Erstellen Sie zuerst ein Projekt und fügen Sie dann ein Testprojekt zu diesem Projekt hinzu. Dies entspricht unserem Bedarf, unser Projekt während der Entwicklung zu testen.
6). Öffnen Sie UnitTest1.cs im Visual Studio-Editor.
Der Code lautet wie folgt:
namespace UnitTestLibraryTest{ [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() {</p> <p> } }}
Beachten Sie Folgendes:
a Jeder Test wird mit [TestMethod] definiert. . Testmethoden müssen „void“ zurückgeben und dürfen keine Parameter haben. Fügen Sie in der Zeile vor dem Klassennamen die Deklaration von [TestClass] hinzu. Die Testmethode muss sich in einer Klasse befinden, die mit dem Attribut [TestMethod] versehen ist. Beim Ausführen eines Tests wird eine Instanz jeder Testklasse erstellt. Testmethoden werden in einer nicht festgelegten Reihenfolge aufgerufen.
c. Sie können bestimmte Methoden definieren, die vor und nach jedem Modul, jeder Klasse oder jeder Methode aufgerufen werden sollen.
d. Fügen Sie im Kopf der Datei einen Verweis auf die Verwendung von Microsoft.VisualStudio.TestPlatform.UnitTestFramework hinzu.
7). Initialisierung vor dem Test und Bereinigung nach dem Test. Die Verwendung und der Code lauten wie folgt:
Der Code lautet wie folgt:
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> } }
2. Überprüfen Sie, ob der Test im Testmanagement-Ressourcer ausgeführt wird
1). Code Wie folgt:
statische
Methoden verwendet werden können, um die Ergebnisse der Testmethode zu überprüfen.[TestMethod] public void AddTestMethod() { int a = 1; int b = 2; int sum = a+b; Assert.AreEqual(3,sum); }
2) Wählen Sie im Menü „Test“ „Ausführen“ und dann „Alle ausführen“.
Das Testprojekt wird generiert und ausgeführt. Das Fenster „Test Explorer“ wird angezeigt und die Tests werden unter „Bestandene Tests“ aufgelistet. Der Bereich „Zusammenfassung“ am unteren Rand des Fensters bietet zusätzliche Details zum ausgewählten Test.
3. Fügen Sie die Rooter-Klasse zum MyTestProject-Projekt hinzu
2). Benennen Sie die Klassendatei Rooter.cs. 3). SquareRoot-Schätzmethode.
4).SqareRoot-Methode ist nur eine minimale Implementierung, die ausreicht, um die grundlegende Teststruktur zum Testen einzurichten.
4. Testprojekte in Anwendungsprojekte zusammenführen
1).
2). Fügen Sie eine using-Anweisung zur Datei UnitTest1.cs hinzu:
public class Rooter { public Rooter() { } public double SquareRoot(double x) { return 0.0; } }
Der Code lautet wie folgt:
4).
Der neue Test wird im Knoten „Nicht ausgeführte Tests“ des Test-Explorers angezeigt.
5) Wählen Sie im Test-Explorer „Alle ausführen“. Basistest bestanden
[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); }
1). Fügen Sie einen neuen Test hinzu:
Der Code lautet wie folgt:
[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两个版本
Das obige ist der detaillierte Inhalt vonAusführliches Tutorial zur Verwendung von Testcode für die Windows 8-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!