Unit Tests non eseguiti

di il
3 risposte

Unit Tests non eseguiti

Ciao a tutti,

sviluppando il mio progetto Blazor Server, sono incappato in una stranezza di cui non vengo a capo.

Ho sempre eseguito gli unit test (creati in automatico con click destro sul metodo -> genera Unit Test) senza nessun problema. Quando oggi sono andato ad aggiungere un metodo nuovo, ho prontamente creato il relativo unit test, sempre con la stessa procedura.

Ho quindi scritto il corpo del test ed ho provato ad eseguirlo, ma ho ottenuto soltanto

Compilazione di progetti di test
========== Avvio dell'esecuzione dei test ==========
========== Esecuzione dei test terminata: 0 test (0 superati, 0 non superati, 0 ignorati) eseguiti in < 1 ms ==========

Ho cercato di capirci qualcosa ed ho trovato questa discussione. Ho quindi provato a modificare la piattaforma di destinazione, portandola per entrambi i progetti da “AnyCPU” a “x64”. Stesso messaggio in console… Ripristinati i valori su “AnyCPU”, niente da fare.

Ogni tanto, mi avvisa in console con:

Compilazione di progetti di test
========== Avvio dell'esecuzione dei test ==========
========== Esecuzione dei test terminata: 0 test (0 superati, 0 non superati, 0 ignorati) eseguiti in < 1 ms ==========
========== Avvio dell'individuazione dei test ==========
Il progetto di test WebSFTests non fa riferimento ad alcun adattatore NuGet .NET. L'individuazione o l'esecuzione dei test potrebbe non funzionare per questo progetto.
È consigliabile fare riferimento agli adattatori di test NuGet in ogni progetto di test della soluzione.
Non ci sono test disponibili in C:\...\WebSFTests.dll. Assicurarsi che l'agente di individuazione test e gli executor di test siano registrati e che le impostazioni delle versioni di piattaforma e framework siano appropriate, quindi riprovare.
========== Individuazione dei test terminata: 0 Test trovati in 1 sec ==========
========== Avvio dell'esecuzione dei test ==========
========== Esecuzione dei test terminata: 0 test (0 superati, 0 non superati, 0 ignorati) eseguiti in < 1 ms ==========

ma onestamente non ne vengo a capo. Ho trovato questa FAQ, ma non capisco cosa devo fare…

Lascio, nel caso potessero essere utili, il corpo del metodo e del test

//Test
[TestClass()]
public class UtilitiesTests
{
    [TestMethod()]
    public void CalcolaScontoTest()
    {
        string[] sconti = { "50", "-50", "2-3", "-3-3", "80+8" };
        decimal[] expected = { 0.5m, 1.5m, 1.0094m, 1.0609m, 0.184m };
        for (byte i = 0; i < sconti.Length; i++)
        {
            Console.WriteLine($"Test sconto {i}");
            Assert.AreEqual(expected[i], Utilities.CalcolaSconto(sconti[i]));
        }
    }
}
    
//Metodo
namespace WebSF.Shared
{
    public static class Utilities
    {
        /// <summary>
        /// Restituisce il valore di uno sconto espresso come stringa
        /// </summary>
        /// <param name="sconto">Stringa che rappresenta lo sconto</param>
        /// <returns>Il valore dello sconto totale</returns>
        /// <example>Sconto = "10+10" => 0.81</example>
        public static decimal CalcolaSconto(string sconto)
        {
            decimal res = 1;
            if (sconto != "")
            {
                string temp = sconto.Replace("+", "|+").Replace("-", "|-");
                if (temp[0] == '|') temp = temp.Remove(0, 1);
                string[] sconti = temp.Split('|');
                for (int i = 0; i < sconti.Length; i++)
                {
                    res *= 1m - (decimal.Parse(sconti[i]) / 100m);
                }
            }
            return res;
        }
	}
}

Che sia per colpa del fatto che è un metodo statico?

3 Risposte

  • Re: Unit Tests non eseguiti

    Ma l'elenco dei test eseguibili compare all'interno dell'apposita finestra (Test Explorer)?

  • Re: Unit Tests non eseguiti

    Si… 

    Andando alla cieca, ho anche aggiornato VS, ma niente comunque. Cercherò di capire cosa sono queste .NET Test Adapter Extension

    L'errore che riporta è proprio quello che ho io. Solo non mi capacito di come può aver funzionato fino a prima e adesso no.

  • Re: Unit Tests non eseguiti

    Mentre continuo a cercare, ho notato che i test (creati alla stessa maniera) in un progetto WPF, funzionano correttamente. Almeno posso presumere che il problema sia circoscritto al progetto Blazor Server.

    EDIT: Continuando a spulciare, tutti i contenuti che ho trovato riguardo al problema riferivano alle versioni 15.x di VS, ed io usando la versione 17.5.1, non riuscivo a venirne fuori. Si parlava sovente di andare a modificare le impostazioni di VS o di verificare il file csproj del progetto di test.

    Alla fine ho optato per il drastico: un bel backup del codice, ho cancellato direttamente il progetto di test, e tornato sul metodo ho fatto creare il test (ed il relativo progetto) in automatico. Ho prelevato il codice dal backup ed ora tutto funziona…

    Boh?!

Devi accedere o registrarti per scrivere nel forum
3 risposte