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?