Maison  >  Article  >  Opération et maintenance  >  Tutoriel détaillé sur l'utilisation du code de test pour le développement de Windows 8

Tutoriel détaillé sur l'utilisation du code de test pour le développement de Windows 8

零下一度
零下一度original
2017-05-24 15:00:511627parcourir

Cet article explique comment utiliser le code de test pour le développement de Windows 8. Les amis dans le besoin peuvent se référer à

1). Créer des solutions et des tests unitairesprojets
 1). puis sélectionnez "Nouveau projet".
 2). Dans la boîte de dialogue "Nouveau projet", développez "Installé", "Visuel C#" et sélectionnez "Windows Store". Sélectionnez ensuite « Application vierge » dans la liste des modèles de projet.
3). Nommez le projet MyTestProject et assurez-vous que "Créer un répertoire de solutions" est sélectionné.
4). Dans l'Explorateur de solutions, sélectionnez le nom de la solution, sélectionnez Ajouter dans le menu contextuel, puis sélectionnez Nouveau projet.
5). Dans la boîte de dialogue « Nouveau projet », développez « Installé », « Visual C# », puis sélectionnez « Windows Store ». Sélectionnez ensuite Bibliothèque de tests unitaires (application Windows Store) dans la liste des modèles de projet.

Remarque : créez d'abord un projet, puis ajoutez un projet de test à ce projet. Cela répond à notre besoin de tester notre projet pendant le développement.

 6). Ouvrez UnitTest1.cs dans l'éditeur Visual Studio.

Le code est le suivant :

namespace UnitTestLibraryTest{    [TestClass]    public class UnitTest1    {            [TestMethod]        public void TestMethod1()        {</p>
<p>        }    }}

Notez ce qui suit :

a. Chaque test est défini à l'aide de [TestMethod] . Les méthodes de test doivent renvoyer void et ne peuvent avoir aucun paramètre. Dans la ligne précédant le nom de la classe, ajoutez la déclaration de [TestClass].

b La méthode de test doit être située dans une classe décorée de l'attribut [TestMethod]. Lors de l'exécution d'un test, une instance de chaque classe de test est créée. Les méthodes de test seront appelées dans un ordre non spécifié.

c. Vous pouvez définir des méthodes spécifiques à appeler avant et après chaque module, chaque classe ou chaque méthode.

d. Ajoutez une référence à l'utilisation de Microsoft.VisualStudio.TestPlatform.UnitTestFramework dans l'en-tête du fichier ;

7). Initialisation avant test et nettoyage après test. L'utilisation et le code sont les suivants :

Le code est le suivant :

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>    }
}

Remarque : Pour la méthode ci-dessus, le nom de la méthode peut être personnalisé, et il n'y a pas de valeur de retour, à l'exception de celle de [ClassInitialize] La fonction n'a pas d'autres paramètres que le paramètre TestContext.

2. Vérifiez si le test est en cours d'exécution dans le ressourceur de gestion des tests

 1). Insérez du code de test dans TestMethod1 du fichier UnitTest1.cs :

code Comme suit :

[TestMethod]
        public void AddTestMethod()
        {
            int a = 1;
            int b = 2;
            int sum = a+b;
            Assert.AreEqual(3,sum);
        }


Notez que plusieurs méthodes static fournies par la classe Assert peuvent être utilisées pour vérifier les résultats de la méthode de test.

2). Dans le menu "Test", sélectionnez "Exécuter" puis sélectionnez "Tout exécuter".
Le projet de test sera généré et exécuté. La fenêtre Explorateur de tests apparaît et les tests sont répertoriés sous Tests réussis. Le volet « Résumé » en bas de la fenêtre fournira des détails supplémentaires sur le test sélectionné.
 

3. Ajoutez la classe Rooter au projet MyTestProject

 1). Dans l'"Explorateur de solutions", sélectionnez le projet "MyTestProject". nom. Sélectionnez Ajouter dans le menu contextuel, puis sélectionnez Classe.
 2). Nommez le fichier de classe Rooter.cs.
 3). Ajoutez le code suivant au fichier Rooter.cs de la classe Rooter :

Le code est le suivant :

public class Rooter
    {
        public Rooter()
        { 
        }
        public double SquareRoot(double x)
        {
            
return
 0.0;
        }
    }

La classe Rooter déclare un constructeur et Méthode d'estimation SquareRoot .

 4).La méthode SquareRoot n'est qu'une implémentation minimale, suffisante pour configurer la structure de test de base pour les tests.

4. Fusionner les projets de test dans les projets d'application

 1). Ajouter une référence à l'application "MyTestProject" au projet UnitTestLibraryTest.

2). Ajoutez une instruction using au fichier UnitTest1.cs :

a.

b. Ajoutez du code sous la ligne using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;: using MyTestProject;

3). Ajoutez un test à l'aide de la fonction Rooter. Ajoutez le code suivant à UnitTest1.cs :

Le code est le suivant :

[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).

Le nouveau test apparaîtra dans le nœud "Unrun Tests" de l'explorateur de tests.

 5). Dans l'explorateur de tests, sélectionnez "Exécuter tout". Test de base réussi

Vous avez configuré vos tests et votre projet de code et vérifié que vous pouvez exécuter des tests qui exécutent des fonctions dans votre projet de code. Vous pouvez maintenant commencer à écrire de vrais tests et du code.

5. Ajoutez des tests de manière itérative et faites réussir ces tests.

1). Ajouter un nouveau test :

Le code est le suivant :

[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;
        }

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

【相关推荐】

1. Windows7下的Java开发环境搭建步骤(图解)

2. Windows系统下安装Ulipad编辑器

3. 使用Python开发windows桌面程序

4. 教你如何在Windows环境下安装python2和python3两个版本

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn