3 votes

Tests unitaires dans visual studio 2010 sans méthode principale

J'essaie de tester à l'unité un code simple pour un projet de classe, mais à chaque fois que j'essaie d'exécuter le test, j'obtiens une erreur indiquant qu'il n'y a pas de home.exe et pas de méthode statique main. Cependant, nous n'avons pas encore atteint le point où nous sommes supposés avoir ces deux choses, alors comment puis-je exécuter le test sans elles ?

Mon code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Home
{
    class InventoryType
    {

        /// <summary>
        /// Selects the inventory type and returns the selected value
        /// </summary>
        public class InventorySelect
        {
            private string inventoryTypes;
            public String InventoryTypes
            {
                set
                {
                    inventoryTypes = value;
                }

                get
                {
                    return inventoryTypes;
                }
            }

            /// <summary>
            /// Validate that the inventory is returning some sort of value
            /// </summary>
            /// <returns></returns>
            public bool Validate()
            {
                if (InventoryTypes == null) return false;
                return true;
            }
        }
    }
}

Mon code de test

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Home.InventoryType.InventorySelect;

namespace HomeTest
{
    [TestClass]
    public class TestInventoryTypeCase
    {
        [TestMethod]
        public void TestInventoryTypeClass()
        {
            InventorySelect select = new InventorySelect();
            select.inventoryTypes = "Collection";

            if (Validate() = true)
                Console.WriteLine("Test Passed");
            else
                if (Validate() = false)
                    Console.WriteLine("Test Returned False");
                else
                    Console.WriteLine("Test Failed To Run");

            Console.ReadLine();

        }
    }
}

3voto

Kevin Points 554

D'accord, il y a deux ou trois choses à faire.

  1. Assurez-vous que le type de sortie de votre projet principal (le projet à tester) est ClassLibrary.
  2. Utilisez des assertions dans vos tests

J'ai créé une solution ClassLibrary appelée ExampleLibrary. J'ai créé une classe appelée InventoryType et j'ai copié votre code, par exemple

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExampleLibrary
{
    class InventoryType 
    { 

        /// <summary> 
        /// Selects the inventory type and returns the selected value 
        /// </summary> 
        public class InventorySelect 
        { 
            private string inventoryTypes; 
            public String InventoryTypes 
            { 
                set 
                { 
                    inventoryTypes = value; 
                } 

                get 
                { 
                    return inventoryTypes; 
                } 
            } 

            /// <summary> 
            /// Validate that the inventory is returning some sort of value 
            /// </summary> 
            /// <returns></returns> 
            public bool Validate() 
            { 
                if (InventoryTypes == null) return false; 
                return true; 
            } 
        } 
    }
}

J'ai ensuite créé un test unitaire et l'ai codé comme suit :

using Microsoft.VisualStudio.TestTools.UnitTesting;
using ExampleLibrary;

namespace HomeTest
{
    [TestClass]
    public class TestInventoryTypeCase
    {
        [TestMethod]
        public void TestInventoryTypeClass()
        {
            InventoryType.InventorySelect select = new InventoryType.InventorySelect();
            select.InventoryTypes = "Collection";

            Assert.IsTrue(select.Validate());
            select.InventoryTypes = null;
            Assert.IsFalse(select.Validate());
        }
    }
}

Je compile et j'exécute le test comme décrit ci-dessus et il s'exécute et renvoie Test Passed.

0voto

Kevin Points 554

Pour exécuter un test dans la barre de menu principale en haut de votre Visual Studio... Test - Windows - Test Explorer

Dans la fenêtre de l'explorateur de tests, sélectionnez le test que vous souhaitez exécuter et cliquez sur l'icône d'exécution en haut de la fenêtre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X