MICROSOFT VISUAL STUDIO: UnitTest - Strumenti utili

MICROSOFT VISUAL STUDIO: UnitTest - Strumenti utili

Programmazione - Visual Studio Visite: 1170

Avete a che fare con Unit Test in ambiente Visual Studio?

Siete nel posto giusto!

 

 

Gli unit test sono metodi automatizzati che vengono utilizzati per verificare che una singola unità di codice funzioni correttamente. In C#, gli unit test sono scritti utilizzando un framework di test come ad esempio MSTest, NUnit o XUnit.

Gli unit test permettono di verificare che il codice sviluppato rispetti i requisiti e che non produca errori imprevisti. Gli sviluppatori scrivono i test prima di scrivere il codice effettivo, questo permette di avere una maggiore copertura e di scrivere codice più robusto e meno suscettibile a bug.

Gli unit test sono scritti per testare il comportamento di una singola unità di codice, come una classe o un metodo, in modo indipendente dall'ambiente esterno. I test vengono eseguiti in un ambiente controllato, in modo da avere risultati riproducibili.

Una tipica classe per gli UnitTest

[TestClass]
[ExcludeFromCodeCoverage]
public class MiaClasseTests
{

    [ClassInitialize]
    public static void ClassInitialize(TestContext a)
    {...}

 

    [ClassCleanup]
    public static void ClassCleanUp()
    {...}

    [TestInitialize]
    public void Setup()
    {...}

    [TestCleanup]
    public void TestCleanUp()
    {...}

}

 

Il marcatore [TestClass] indica che è una classe contenente unitTest.

Il marcatore [ExcludeFromCodeCoverage] indica di escludere la classe per la code coverage.

I metodi elencati sono quelli necessari per le impostazioni generali dei test.

Un tipo metodo di test è il seguente:

    [TestMethod]
    [TestCategory("MiaCategory")]
    public void A01_MioTest()
    {
           Assert.IsTrue(...some condition...);
    }

 

Il marcatore  [TestMethod] indica che è un nuovo test.

Il marcatore [TestCategory("MiaCategory")] serve a categorizzare in test.

 

Assert per eccezioni

Vediamo una assert che va a buon fine se il metodo restituisce una eccezione di tipo ApplicationException:

   Assert.ThrowsException<ApplicationException>(() => MyMethod());

 

Se invece si vuole controllare la tipologia di messaggio restituito dall'eccezione:

var ex = Assert.ThrowsException<ApplicationException>(() => MyMEthod());
Assert.IsTrue(ex.InnerException.Message.Contains("error myMethod"));

 

Buon lavoro!